mirror of
https://github.com/pese-git/simple-llm.git
synced 2026-01-23 21:14:17 +00:00
Добавлена документация для FeedForward слоя
- Полное описание алгоритма с блок-схемой - Примеры использования - Таблица параметров - Ссылка на пример визуализации
This commit is contained in:
63
doc/feed_forward_ru.md
Normal file
63
doc/feed_forward_ru.md
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
# FeedForward - Прямая полносвязная сеть трансформера
|
||||||
|
|
||||||
|
## Назначение
|
||||||
|
Модуль реализует двухслойную нейронную сеть, которая:
|
||||||
|
- Добавляет нелинейность в трансформер
|
||||||
|
- Расширяет и сжимает представление
|
||||||
|
- Применяет 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)|
|
||||||
|
|
||||||
|
## Особенности
|
||||||
|
- Сохраняет размерность входа/выхода
|
||||||
|
- Автоматически обрабатывает batch и последовательности
|
||||||
|
- Поддерживает режимы train/eval
|
||||||
|
|
||||||
|
[Пример визуализации](/example/feed_forward_example.py)
|
||||||
Reference in New Issue
Block a user