avorozhko commited on
Commit
09cb7f3
·
1 Parent(s): 6f33971

Create readme file

Browse files

Readme first version

Files changed (1) hide show
  1. README.md +41 -0
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. Далее, судя по всему идет уже переобучение.