Create readme file
Browse filesReadme first version
README.md
ADDED
@@ -0,0 +1,41 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
## Описание модели
|
2 |
+
|
3 |
+
Этот чатбот - дипломная работа студента Андрея Ворожко в УИИ (Университет Искусственного Интеллекта).
|
4 |
+
|
5 |
+
Окончание обучения - март 2022 года.
|
6 |
+
|
7 |
+
Чатбот сделан на основе модели [Kirili4ik/ruDialoGpt3-medium-finetuned-telegram](https://huggingface.co/Kirili4ik/ruDialoGpt3-medium-finetuned-telegram)
|
8 |
+
|
9 |
+
Теперь модель дообучена на основе 27000 анекдотов (14 эпох, скорость обучения в колабе 2-6 часов на эпоху) и умеет понимать контекст разговора. Однако контекст приходится ограничивать несколькими последними сообщениями потому что чем больше контекста тем медленнее модель работает, а контекст растет как снежный ком в процессе разговора.
|
10 |
+
|
11 |
+
Инференс находится в [spaces](https://huggingface.co/spaces/avorozhko/funbot):
|
12 |
+
|
13 |
+
Там с ботом можно поговорить. Контекст ограничен 10 последними сообщениями.
|
14 |
+
|
15 |
+
Шутки бот выдает, но пока скорее случайно, чем намеренно. Однако разговор поддержать способен и даже немного развлечь.
|
16 |
+
|
17 |
+
Так как это генерация текста, то на одну и ту же фразу бот всегда будет выдавать разные ответы.
|
18 |
+
|
19 |
+
Также для определения качества данной модели использовалась кастомная метрика - угловое расстояния между эмбеддингами y_train и предикта.
|
20 |
+
|
21 |
+
То есть мы взяли первый слой эмбеддинга модели и прогоняли предикты и лейблы, получили вектора слов. Потом вектора слов суммировали и получили общие (суммарные) вектора лейблов и предиктов. Чем меньше угол между ними, тем лучше. При рассчетах ориентировались на косинус этого угла, так как cos 0 = 1, то это очень удобно - чем ближе показатель к 1, тем лучше.
|
22 |
+
|
23 |
+
Вот такое распределение этих значений получилось по эпохам на ПРОВЕРОЧНОЙ выборке (1406 анекдотов):
|
24 |
+
```
|
25 |
+
{1: tensor(0.9357, device='cuda:0', grad_fn=<DivBackward0>),
|
26 |
+
2: tensor(0.9390, device='cuda:0', grad_fn=<DivBackward0>),
|
27 |
+
3: tensor(0.9417, device='cuda:0', grad_fn=<DivBackward0>),
|
28 |
+
4: tensor(0.9439, device='cuda:0', grad_fn=<DivBackward0>),
|
29 |
+
5: tensor(0.9470, device='cuda:0', grad_fn=<DivBackward0>),
|
30 |
+
6: tensor(0.9537, device='cuda:0', grad_fn=<DivBackward0>),
|
31 |
+
7: tensor(0.9568, device='cuda:0', grad_fn=<DivBackward0>),
|
32 |
+
8: tensor(0.9592, device='cuda:0', grad_fn=<DivBackward0>),
|
33 |
+
9: tensor(0.9610, device='cuda:0', grad_fn=<DivBackward0>),
|
34 |
+
10: tensor(0.9622, device='cuda:0', grad_fn=<DivBackward0>),
|
35 |
+
11: tensor(0.9628, device='cuda:0', grad_fn=<DivBackward0>),
|
36 |
+
12: tensor(0.9632, device='cuda:0', grad_fn=<DivBackward0>),
|
37 |
+
13: tensor(0.9630, device='cuda:0', grad_fn=<DivBackward0>),
|
38 |
+
14: tensor(0.9634, device='cuda:0', grad_fn=<DivBackward0>),
|
39 |
+
15: tensor(0.9634, device='cuda:0', grad_fn=<DivBackward0>)}
|
40 |
+
```
|
41 |
+
Для инференса выбрана 14-я эпоха с точностью 0.9634. Далее, судя по всему идет уже переобучение.
|