Комплексное обновление проекта

- Добавлена документация по эмбеддингам (markdown + drawio)
- Реализован модуль PositionalEmbeddings
- Обновлен .gitignore
- Исправлено имя модуля token_embeddings.py
This commit is contained in:
Sergey Penkovsky
2025-07-18 00:25:55 +03:00
parent b43e6a85f4
commit 32bca15069
5 changed files with 170 additions and 0 deletions

View File

@@ -0,0 +1,56 @@
# PositionalEmbeddings - Позиционные эмбеддинги
## Назначение
Позиционные эмбеддинги добавляют информацию о порядке элементов в последовательности. Критически важны для:
- Transformer-архитектур
- Моделей обработки текста (BERT, GPT)
- Задач с временными рядами
## Алгоритм работы
```mermaid
flowchart TD
A[Создание слоя] --> B[Запрос длины последовательности]
B --> C{Длина в допустимых пределах?}
C -->|Да| D[Генерация индексов 0..seq_len-1]
D --> E[Получение векторов из embedding-таблицы]
E --> F[Возврат эмбеддингов]
C -->|Нет| G[Ошибка IndexError]
```
1. **Инициализация**:
- Создается таблица размером `max_seq_len x emb_size`
- Каждая позиция получает уникальный обучаемый вектор
2. **Работа**:
- Принимает длину последовательности `seq_len`
- Возвращает тензор формы `[seq_len, emb_size]`
## Пример использования
```python
# Инициализация
pos_emb = PositionalEmbeddings(max_seq_len=512, emb_size=128)
# Получение эмбеддингов для 50 элементов
embeddings = pos_emb(50) # shape: [50, 128]
# Интеграция в модель
class TransformerBlock(nn.Module):
def __init__(self):
self.pos_emb = PositionalEmbeddings(512, 128)
def forward(self, x):
pos = self.pos_emb(x.size(1)) # Добавляем к токенным эмбеддингам
return x + pos
```
## Сравнение подходов
| Метод | Обучаемость | Плюсы | Минусы |
|----------------------|-------------|--------------------------------|-----------------------|
| Обучаемые | Да | Гибкость | Требует данных |
| Синусоидальные | Нет | Хорошая обобщающая способность | Фиксированный паттерн |
## Оптимальные практики
- Для `max_seq_len` берите с запасом (+20%)
- Размерность делайте равной размерности токенных эмбеддингов
- Для длинных последовательностей комбинируйте с синусоидальными

0
doc/token_embeddings.md Normal file
View File

View File

@@ -0,0 +1,21 @@
<mxfile>
<diagram name="Token Embeddings Flow" id="0">
<mxGraphModel>
<root>
<mxCell id="1"/>
<mxCell id="2" parent="1"/>
<mxCell id="3" value="Входные токены (индексы)" style="shape=rectangle" parent="2" vertex="1">
<mxGeometry x="100" y="100" width="120" height="60"/>
</mxCell>
<mxCell id="4" value="Lookup в таблице эмбеддингов" style="shape=rectangle" parent="2" vertex="1">
<mxGeometry x="100" y="200" width="120" height="60"/>
</mxCell>
<mxCell id="5" value="Выходные эмбеддинги" style="shape=rectangle" parent="2" vertex="1">
<mxGeometry x="100" y="300" width="120" height="60"/>
</mxCell>
<mxCell id="6" source="3" target="4" parent="2" edge="1"/>
<mxCell id="7" source="4" target="5" parent="2" edge="1"/>
</root>
</mxGraphModel>
</diagram>
</mxfile>