Files
simple-llm/doc/feed_forward_ru.md

114 lines
3.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# FeedForward - Прямая полносвязная сеть трансформера
> **Документ актуален для Simple-LLM v1.0 (июль 2025)**
---
**Краткое summary:**
Документ описывает модуль двухслойной прямой полносвязной сети (Feed Forward) в трансформерах. Включает алгоритм, пример использования, параметры и типовые ошибки.
---
**Структура документа:**
- Назначение
- Алгоритм работы
- Пример использования
- Параметры
- Особенности
- Типовые ошибки и их решения
---
## Назначение
Модуль реализует двухслойную нейронную сеть, которая:
- Добавляет нелинейность в трансформер
- Расширяет и сжимает представление
- Применяет dropout для регуляризации
## Алгоритм работы
```mermaid
flowchart TD
A[Вход: x] --> B[Линейный слой: emb_size → 4*emb_size]
B --> C[Активация ReLU]
C --> D[Линейный слой: 4*emb_size → emb_size]
D --> E[Dropout]
E --> F[Выход]
```
1. **Расширение признаков**:
```python
h = W1 * x + b1 # W1: [emb_size, 4*emb_size]
```
2. **Нелинейность**:
```python
h = relu(h)
```
3. **Сжатие признаков**:
```python
out = W2 * h + b2 # W2: [4*emb_size, emb_size]
```
4. **Регуляризация**:
```python
out = dropout(out)
```
## Пример использования
```python
from simple_llm.transformer import FeedForward
# Инициализация
ff = FeedForward(emb_size=512, dropout=0.1)
# Прямой проход
x = torch.randn(1, 10, 512) # [batch, seq_len, emb_size]
output = ff(x) # [1, 10, 512]
```
## Параметры
| Параметр | Тип | Описание |
|------------|--------|------------------------------|
| `emb_size` | int | Размерность входных/выходных векторов |
| `dropout` | float | Вероятность dropout (0.0-1.0)|
## Рекомендации
- Dropout обычно выбирают 0.10.3
- Следите, чтобы emb_size совпадал с размерностью входа/выхода
- Используйте режимы train/eval корректно
- Для визуализации используйте [пример](/example/feed_forward_example.py)
---
## Типовые ошибки и их решения
### Ошибка: Размерности не совпадают при прямом проходе
**Возможные причины:**
- emb_size не совпадает с размерностью входных данных
**Решение:**
- Проверьте, что emb_size слоя FeedForward совпадает с размерностью последнего слоя перед ним
### Ошибка: Модель не обучается (loss не уменьшается)
**Возможные причины:**
- Dropout слишком высокий
- Ошибка в подключении слоя к модели
**Решение:**
- Попробуйте уменьшить dropout
- Проверьте, что слой FeedForward включён в модель и его параметры передаются в оптимизатор
### Ошибка: CUDA out of memory
**Возможные причины:**
- Слишком большой batch_size или размерность emb_size
**Решение:**
- Уменьшите batch_size или emb_size
---
- Поддерживает режимы train/eval
[Пример визуализации](/example/feed_forward_example.py)