mirror of
https://github.com/pese-git/simple-llm.git
synced 2026-01-23 13:03:55 +00:00
3.9 KiB
3.9 KiB
FeedForward - Прямая полносвязная сеть трансформера
Документ актуален для Simple-LLM v1.0 (июль 2025)
Краткое summary: Документ описывает модуль двухслойной прямой полносвязной сети (Feed Forward) в трансформерах. Включает алгоритм, пример использования, параметры и типовые ошибки.
Структура документа:
- Назначение
- Алгоритм работы
- Пример использования
- Параметры
- Особенности
- Типовые ошибки и их решения
Назначение
Модуль реализует двухслойную нейронную сеть, которая:
- Добавляет нелинейность в трансформер
- Расширяет и сжимает представление
- Применяет dropout для регуляризации
Алгоритм работы
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[Выход]
-
Расширение признаков:
h = W1 * x + b1 # W1: [emb_size, 4*emb_size] -
Нелинейность:
h = relu(h) -
Сжатие признаков:
out = W2 * h + b2 # W2: [4*emb_size, emb_size] -
Регуляризация:
out = dropout(out)
Пример использования
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.1–0.3
- Следите, чтобы emb_size совпадал с размерностью входа/выхода
- Используйте режимы train/eval корректно
- Для визуализации используйте пример
Типовые ошибки и их решения
Ошибка: Размерности не совпадают при прямом проходе
Возможные причины:
- emb_size не совпадает с размерностью входных данных
Решение:
- Проверьте, что emb_size слоя FeedForward совпадает с размерностью последнего слоя перед ним
Ошибка: Модель не обучается (loss не уменьшается)
Возможные причины:
- Dropout слишком высокий
- Ошибка в подключении слоя к модели
Решение:
- Попробуйте уменьшить dropout
- Проверьте, что слой FeedForward включён в модель и его параметры передаются в оптимизатор
Ошибка: CUDA out of memory
Возможные причины:
- Слишком большой batch_size или размерность emb_size
Решение:
- Уменьшите batch_size или emb_size
- Поддерживает режимы train/eval