Видео проигрыватель загружается.Воспроизвести видеоВоспроизвестиБез звукаТекущее время 0:00/Продолжительность 1:31Загрузка: 0.00%0:00Тип потока ОНЛАЙНSeek to live, currently behind liveОНЛАЙНОставшееся время -1:31 1xСкорость воспроизведения2x1.75x1.5x1.25x1x, выбрано0.75x0.5xГлавыГлавыОписанияОтключить описания, выбраноСубтитрынастройки субтитров, откроется диалог настройки субтитровСубтитры выкл., выбраноЗвуковая дорожкаPicture-in-PictureПолноэкранный режимThis is a modal window.Начало диалоговго окна. Кнопка Escape закроет или отменит окноТекстColorБелыйЧерныйКрасныйЗеленыйСинийЖелтыйПурпурныйГолубойTransparencyПрозрачностьПолупрозрачныйФонColorЧерныйБелыйКрасныйЗеленыйСинийЖелтыйПурпурныйГолубойTransparencyПрозрачностьПолупрозрачныйПрозрачныйОкноColorЧерныйБелыйКрасныйЗеленыйСинийЖелтыйПурпурныйГолубойTransparencyПрозрачныйПолупрозрачныйПрозрачностьРазмер шрифта50%75%100%125%150%175%200%300%400%Стиль края текстаНичегоПоднятыйПониженныйОдинаковыйТеньШрифтПропорциональный без засечекМоноширинный без засечекПропорциональный с засечкамиМоноширинный с засечкамиСлучайныйПисьменныйМалые прописныеСбросить сбросить все найстройки по умолчаниюГотовоЗакрыть модальное окноКонец диалогового окна.
Давайте уже наконец перейдём к самому обучению. Сначала мы создаём экземпляр класса trainer, то есть — того класса, который мы сейчас описывали, и передаём туда размер нашего словаря, размер эмбеддингов, которые мы строим, максимальную длину предложения, а также описываем ширину окна, в рамках которого нам нужно учитывать совместные встречаемости слов. И для каждого предложения мы будем сэмплировать 25 отрицательных слов. Обучать модель мы будем с помощью функции "train_eval_loop", она реализует стандартный цикл для обучения нейросети, когда мы берём батч примеров из датасета, подаём на вход нейросети, вычисляем функцию ошибки, делаем градиентный шаг, и так далее — повторяем несколько таких эпох. И на каждой эпохе мы делаем проход как по обучающей подвыборке, так и по тестовой. Правда, для этого семинара мы внесли в этот цикл пару изменений — основное изменение заключается в том, что мы будем менять скорость обучения в процессе обучения. Логика такая, что когда, спустя несколько итераций, значение функции потерь перестаёт уменьшаться, мы считаем, что мы достигли некоторого предела, используя градиентные шаги такой длины, и говорим, что дальше будем делать более короткие шаги. Это позволяет нам спускаться в более узкие локальные минимумы, в которое мы бы не могли зайти, используя длинные шаги. Итак поехали обучать!
К сожалению, у нас пока нет статистики ответов на данный вопрос,
но мы работаем над этим.