Chatbot на базе рекуррентной нейронной сети своими руками с нуля
HTML-код
- Опубликовано: 18 дек 2016
- Этим видео я хочу показать насколько просто сегодня использовать нейронные сети. Вокруг меня довольно много людей одержимы идеей того, что нейронки может использовать только исследователь. И что бы получить хоть какой то выхлоп, нужно иметь как минимуму кандидатскую степень. А давайте на реальном примере посмотрим как оно на самом деле, взять и с нуля за один вечер обучить chatbot. Да еще не просто абы чем а самым что ни на есть ламповым TensorFlow. При этом я постарался описать все настолько просто, что-бы он был понятен даже начинающему программисту!
Видео записано по материалам статьи: habrahabr.ru/post/317732/
Английская версия: blog.kovalevskyi.com/rnn-base...
• Discord-чат академии: bit.ly/2K6XQQ2
• Patreon: / b0noi
Ссылки из видео:
• Cornell Movie Dialogs Corpus www.cs.cornell.edu/~cristian/...
• Скрипт для ковертирования корпуса в нужный формат для обучения: github.com/b0noI/dialog_conve...
• AWS AMI: Bitfusion Ubuntu 14 Scientific Computingaws.amazon.com/marketplace/pp...
• Код tensorflow который можно использовать для обучения: github.com/b0noI/tensorflow/t...
Спасибо! Перестал комплексовать знанием своего английского
Спасибо большое за очень интересное занятие!
Спасибо за видео и за статью! Круто, что рассказываете всегда по делу и без пафоса, часто присущего людям из мира ml и ai.
+Nikita Ermolenko о, хорошая идея (шучу) :))
Как обычно делают лекторы из Майкрософт)
Не то, что всякие Winderton'ы
Мне понравилось ! Попробую :)
Позитивный ... респект )
Спасибо за видео
С самого начала сразу вспомнил как следил за разговором двух ботов(вроде это была Алекса от Амазон) и они говорили фразами из фильмов, то и дело флиртовали, каждый раз меняли себе пол и имена, теперь всё стало понятно :)
Супер.
Спасибо! Познавательно. Возможно создание контекстно-соображающей сети, которая будет дописывать (добавлять) свои нейроны? Или это пахнет восстанием машин?))
bay bay!
Спасибо большое! Очень познавательно.
Скажите, а в какую сторону копать, чтобы написать чатбот на андроид? Хотя бы вот такой, как у Вас здесь получился.
+Andrey K я бы рекомендовал сделать REST сервис с моделью которую натренировали на видео, а на Android просто дергать этот сервис. Но TensorFlow модели можно при желании использовать и на Android, пример: github.com/tensorflow/tensorflow/tree/master/tensorflow/examples/android
Ну, через сервис можно что угодно сделать :)
Спасибо за пример, обязательно почитаю.
Ждем-с продолжения ;)
Прикольно.
Отлично. Для меня актуально 25.03.2023
В сериале черное зеркало был момент : мужика после смерти заменил чат бот, обучившийся на истории его сообщений в сети.
а какая серия?
там вроде был не чат бот а полноценный робот с имитацией внешности, голоса и тп на основе его фотографий, видео из соц сетей и его личных вещей
@@koylrust6482 сначала ей подключили только чат бота, но потом она перенесла этого чат бота в мужика.
Видно, что ведущий хорошо владеет механизмом обучения нейронных сетей...
Добрый день. А подскажите , можно ли обучить сеть писать рассказы на заданную тему , ну например языком Шекспира и если да, то как это реализовать и на какие этапы разбить эту задачу? Заранее спасибо .
А можно чуть объяснить что в данном случае были входящие сигналы, и сколько выходящих нейронов и что они сигнализировали?
Спасибо за видео.
Запустил обучение на CPU, спустя час обучения ункает UNK
Не должно ведь ункать? ;)
В твоём случая наверное несколько тысяч часов потребуется)
А можно ли гдето взять дамп уже обученной такой нейросетки с чатботом? и с ней работать
Я хотел создать именно чат бота простого, потом подумал над нейросетью и нашел ваше видео, всю ночь сегодня думал как она работает и догадался, оказалось просто тут обьяснять не буду но я нашел статьи по этой нейросети, вернее на какой нейронке она сделана и это Класификатор текста. Он есть на гугле и код тот же, даже есть куча готовых тестов для этой нейронки. Пример в видео нашел как она обучается по заголовку и тексту определять Новость это, Статья, и т.д. теперь думаю как бы к ней прекрутить генерацию текста ;-) да и не обязательно искать крутой камп чтобы ее обучить, сервис есть на гугле, видео вроде называлось Класификация текста нейросетью. Если у вас еще есть интерес к этому могли бы реанимировать своего чатбота ;-) я просто пишу на другом языке а нейросетками как хобби увлекаюсь, так что я бы точно заценил нового чатбота ;-)
Существуют ли нейросети, которые конструируют другие нейросети? :) Все время слышу, что очень важно выбрать правильную архитектуру нейросети, так почему бы не доверить и эту задачу нейросети?
Здравствуйте! Подскажите пожалуйста, можно - ли подключить чатбота к ватсап группе или телеграмм, для создания словаря? И если кратко сможете объяснить как это сделать?
42:04 Божее я угораю :DDD
Спасибо, но что такое рути?
Подскажите пожалуйста, наверняка проводят исследования с самопорождающейся архитектурой нейронной сети. Когда нейронная сеть начинается с примитивной модели, и по мере обучения усложняется в тех местах, где это необходимо, добавляет память, чтоб хранить разные контексты и прочее. Как это называется? Чтоб нагуглить статьи.
На последнем Google I/O выкатили вот это: www.sciencealert.com/google-is-improving-its-artificial-intelligence-with-artificial-intelligence
Нейронка которая строит другие нейронки =) Немного деталей: research.googleblog.com/2017/05/using-machine-learning-to-explore.html
Круто! Спасибо :)
просто отлично, тот самый видео пример на амазоновских вычеслительных системах, подскажите, можно ли повысить число хайден лэирс и нейров/нов и каков будет результат?просто гениальная идея снимать дампы своих чатов тех же whatsapp & telegram, прогонять их раз в год и оставить после своей смерти вполне способный к общению мемориал...подскажите примерно, как можно связать предыдущий диалог с последующими?
Времени на много эксперементов небыло, так что трудно сказать по поводу скрытых слоев. Что касается связывания нескольких диалгово воедино то это довольно трудная задача я сейчас сам работаю в этом направлении =)
Java Courses With Kovalevskyi например создать обновляемый массив последних, скажем, 10 диалогов и пропускать их в последующих скрытых слоях после основного?..да уж..я толком не знаю как объяснить идею
Как можно посмотреть график сходимости в данном случае?
Спасибо. Хотел спросить пару вопросов:
* Если обучать в этом темпе на протяжении 24 часа, то сколько это будет стоить ?
* Если мы останавливаем обучение, то продолжать обучение система будет с этой же итерации ?
* Если мы уже обучили и результаты нас удовлетворяют, возможно ли сделать перенос на локальную машину, или непосредсвенное использование требует той же мощности ?
* А что лучше в контексте цены конечного использования и эффективности если сравнивать тензор флоу и спарк мл либ ?
> Если обучать в этом темпе на протяжении 24 часа, то сколько это будет стоить ?
Стоимость машины 1$ в час.
> Если мы останавливаем обучение, то продолжать обучение система будет с этой же итерации ?
Да, если указать все те же параметры и те же пути, она пожхватит последний checkpoint.
> Если мы уже обучили и результаты нас удовлетворяют, возможно ли сделать перенос на локальную машину, или непосредсвенное использование требует той же мощности ?
Да, можно переместить данные checkpoint*.index/meta (с самым большим номер) и можно использовать локально. Так как это не обучение то спокойно можно использовать версию TF на CPU/RAM.
> А что лучше в контексте цены конечного использования и эффективности если сравнивать тензор флоу и спарк мл либ ?
К сожалению почти не использовал Spark ML, так что мало что тут смогу Вам посоветовать или что подсказать =(
Спасибо за ответ.
Задумался, вот обучу, а дальше, постоянно на АВС обучать? Ок, значит можно еще и перенести. Супер.
К слову.
Начал заводить инстанс нужный - не дает, лимит пишет. Жду тех поддержку, когда дадут разрешение.
удалять можно в одну строку, только аргументами
rm -rf 1 2 3 *regex* /tmp other
А можно ли в файле с диалогами вместо английского языка использовать диалоги на русском?
Эй, а не ваша ли это статья на Хабре?
Все здорово, но bay-bay это бухта-бухта
=)))
Спасибо за отличное видео, только непонятно почему используется для вычисления видеокарта?(Почему нельзя использовать просто мощный процессор и много оперативной памяти?)
вряд ли месяц стабильные 220v будут)
CPU не расчитан на выполнения задач такого типа, он выполняет более общие задачи, ровно по этим же причинам собственно и нужен GPU. В теории можно 3D игру рендерить на CPU, и так собственно когда то и было =) Однако именно потому что это ОЧЕНЬ медленно и появились 3D ускорители. Соотвественно работая с ними можно в разы повысить скорость тренеровки сети. К слову сказать в Google разработали даже отедльный чип TensorProcessing Unit (TPU) который заточен ровно под эту задачу - работу с сетями.
Здравствуйте , а можете пожалуйста отдельный целый урок как сделать такого чат бота дартвейдера на русском языке , с кодом и прочим ))
Спасибо
Ребята, с какой простейшей нейронки можно начать практическое освоение данной технологии?
Подскажите пожалуйста, как g2 или p2 инстанс купить? Мне только t2.micro дают почему-то...;)
разобрались? мне тоже только малышей дают. написал админам
лол не дарк а дарт вейдер )
О, точно =)
сделайте чат бота дарта сидиуса будет про дарта плэгаса рассказывать
а если это делать на обычной домашней видухе типа 1050ti? во сколько раз медленнее будет происходить процесс?
он что-то про вылеты от нехватки vram говорил и это при 11гб
gtx 1060 подойдёт?
А можно ли сделать на php на денвере сеть и самостоятельно у себя на пк обучить, да еще сделать, чтобы при общении постоянно обучалась?
Чат-бота, который будет помнить историю переписки с человеком и не терять нить разговора? Если это сделать, объединив сеть и специальные базы и алгоритмы. Или это уже не будет нейросеть? Например, как у человека кроме мозга с его сетью, есть органы чувств, инстинкты(как биос над основной ОС): зависть, инстинкт размножения, самосохранение...
Еще человек делает что-то вроде квестов. Например в чате это может быть угадывание чего-либо. А для этого чат должен переключиться в режим "квест", он будет помнить, что начал задавать вопросы и получать ответы, анализировать их, чтобы прийти к финалу при выполнении квеста "угадывание". И добавить в него "факты", база с фактами от разработчика, которые бот не может перезаписать в своей сети, дабы избежать таких умозаключений как, например, "я люблю геноцид". И считать себя ботом с именем, который дал разработчик, а не писать всякую рандомную фигню и уж тем более научиться говорить свое имя от собеседников.
Можно ли эти данные моделировать отдельно от нейросети, хранить в специальных файлах, или нужно сделать дополнительное ответвление в нейросети с другой структурой, в которое скормить эти данные?
И еще, можно сделать, чтобы программа понимала образы, а уж на основе образов строила предложения? Например категории образов: действие, объект, субъект, свойство, причина, следствие, время, место.
Пример: [причина] "Я(субъект) вчера вечером(время) заболел(действие)." [следствие]: "Поэтому не пошел(действие) сегодня(время) на работу(объект)."
Вообще изначально забить его базу фактами, чтобы ему не пришлось потом эти данные получать самостоятельно. А потом уже пусть постепенно доучивается. Вроде так можно и на CPU сделать, ведь при добавлении фактов не нужны вычисления сложные, или так нейросети не делаются?
Или это не сделать на нейросети? И вообще на Php невозможно реализовать в силу медленной работы для такой задачи?
Я мало работал с PHP, надеюсь что там есть какие либо low-level hooks для вызова кода на Python или С++, ну или может есть готовые обвертки позволяющее работать с натренированными моделями Tensorflow.
Ну а если просто для начального изучения без всяких готовых модулей на PHP можно примитивные сети делать и обучать? Или скорость работы движка не позволит и лучше не лезть в изучение? Раз уже сильно шагнули технологии в этом направлении, в азы не вникать сильно, а из готовых модулей конструировать сети и играться на уровне пользователя?
Есть модуль PHP FANN это модуль для работы с нейронками.
В актуальной версии Tensorflow не могу найти translate. Может знаете где он сейчас?
Разобрался с проблемой?
А в телеграмме можно бота поднять?)
Можно, используй методы API с пайтоном, лично у меня бот работает с инстаграмом
Запускаю скрипт для обучения:
No module named models.rnn.translate .. =( ест подсказки?
Правильно ли я понимаю мы создали нейронную сеть с 1024 нейронами на вход поступают диалог (вопрос+ответ) (и таких диалогов очень много). Собственно каждая итерация "пропускает" через всю нейронную сеть связку вопрос+ответ и соответственно настраиваются коэффициенты весов, "улавливая" какие-то закономерности типо а вон в конце стоит точка а в начале с большой буквы и т.п., чем больше диалогов и времени, затраченного на обучение тем и будет "умнее" нейронная сеть? А ведь это только 1024 (ох, как я люблю эту цифру) нейронов совсем копеечное количество, там наверняка потребуется несколько миллиардов... Да, очень интересная вещь, эти нейронные сети, до сих пор не могу переоценить их потенциал.
Ты вообще не понимаешь, как это работает! какие нафиг 1024 нейрона? Для такого простого бота хватит и 10. Сначала изучи машинное обучение и подумай, как ты будешь обучать миллиарды нейронов.
Что будет если сделать следующее:
Если бот нашел что ответить то он отвечает,
Если нет, то он спрашивает: вв можете объяснить что это означает?
И пользователь вводит как на это отвечать. А дальше идёт обучение бота на данное слово.
Что б проверить какую видео использует, захожу в питон, там ввожу import tensorflow as tf - и ничего не пишется. подумал и новую строку, без какой либо выдачи. В чем дело то?
Так импорт то произошёл... Правда кажется это уже не поможет )
Почему нельзя тренировать на процессоре?
Не знаю уместно ли здесь спрашивать, но я пытаюсь все запустить на своем компе.
При запуске converter.py выдает ошибку : ImportError: No module named 'scipy'
Хотя scipy устанавливал(pip3 install scipy).
Windows 7, python 3.5.2, TensorFlow тоже установлен
у меня порешалось установкой scipy и Numpy+MKL со стрёмного места:
www.lfd.uci.edu/~gohlke/pythonlibs/#numpy
www.lfd.uci.edu/~gohlke/pythonlibs/#scipy
*по рекомендации с www.scipy.org/install.html#individual-packages
запустил локально на Вин10. если вдруг поможет - github.com/voidgit/models
Я которой программирую на телефоне 😐
Скажите пожалуйста, должен ли я досконально знать как математически устроены алгоритмы машинного обучения, или достаточно поверхностного понимания их работы, что бы получить работу в этой области
Это же замечательно!
Берём статьи с хабра по программированию в один файл, кулинарные рецепты в другой и можно открывать новый сайт новейших кулинарных рецептов. Можно наоборот и открыть новый сайт по программированию.
Всего 100 строк кода и бесконечное море свежайшего контента!
Ребята, скажите, а можно нейронную сеть запустить на карточках AMD?
Это сбербанк
И только русский человек, чтобы выполнить ls в консоли листает вверх историю, хоть там и 100 команд, вместо того чтоб написать ls :D :D :D
Осталось научить сетку отвечать на упячко-сленге!
это не джава
13:32 Ихние
С каких пор базы данных стали нейросетью ? ))) Эммитация оргазма никогда не заменит оргазма и не повторит его )))
у вас много грамматических ошибок при общении с сетью, поэтому она тупит больше, чем должна, кажется )
Вот кстати интересно ведь диалоги из фильмов получаются "слишком правильные", если б там были грамматические, орфографические, пунктуационные ошибки то она была "умнее", но и опять таки обучатся ещё дольше.
Как можно постоянно использовать англицизмы и при этом совершенно не знать грамматику английского?
Зис ис Раша, мазафакер!!!1111
ЗАКРЫЛ КОГДА УСЛЫШАЛ ПРО 6 ДОЛЛАРОВ))
это полный развод учите логику и все будет понятно