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...

Комментарии • 101

  • @foifirst
    @foifirst 6 лет назад +62

    Спасибо! Перестал комплексовать знанием своего английского

  • @user-ms8wc3ql2f
    @user-ms8wc3ql2f 3 года назад +1

    Спасибо большое за очень интересное занятие!

  • @nikitaermolenko3688
    @nikitaermolenko3688 7 лет назад +30

    Спасибо за видео и за статью! Круто, что рассказываете всегда по делу и без пафоса, часто присущего людям из мира ml и ai.

    • @KovalevskyiAcademy
      @KovalevskyiAcademy  7 лет назад +6

      +Nikita Ermolenko о, хорошая идея (шучу) :))

    • @nikisanjes4166
      @nikisanjes4166 6 лет назад

      Как обычно делают лекторы из Майкрософт)

    • @kiri11-mi1
      @kiri11-mi1 4 года назад +1

      Не то, что всякие Winderton'ы

  • @vladazzv3968
    @vladazzv3968 6 лет назад

    Мне понравилось ! Попробую :)

  • @0984326650maxim
    @0984326650maxim 7 лет назад

    Позитивный ... респект )

  • @junisbai
    @junisbai 7 лет назад

    Спасибо за видео
    С самого начала сразу вспомнил как следил за разговором двух ботов(вроде это была Алекса от Амазон) и они говорили фразами из фильмов, то и дело флиртовали, каждый раз меняли себе пол и имена, теперь всё стало понятно :)

  • @YevhenZinhalov
    @YevhenZinhalov Год назад

    Супер.

  • @starters988
    @starters988 5 лет назад

    Спасибо! Познавательно. Возможно создание контекстно-соображающей сети, которая будет дописывать (добавлять) свои нейроны? Или это пахнет восстанием машин?))

  • @user-xl1qb5yn1z
    @user-xl1qb5yn1z 6 лет назад +4

    bay bay!

  • @andreyk5820
    @andreyk5820 7 лет назад +5

    Спасибо большое! Очень познавательно.
    Скажите, а в какую сторону копать, чтобы написать чатбот на андроид? Хотя бы вот такой, как у Вас здесь получился.

    • @KovalevskyiAcademy
      @KovalevskyiAcademy  7 лет назад +1

      +Andrey K я бы рекомендовал сделать REST сервис с моделью которую натренировали на видео, а на Android просто дергать этот сервис. Но TensorFlow модели можно при желании использовать и на Android, пример: github.com/tensorflow/tensorflow/tree/master/tensorflow/examples/android

    • @andreyk5820
      @andreyk5820 7 лет назад

      Ну, через сервис можно что угодно сделать :)
      Спасибо за пример, обязательно почитаю.
      Ждем-с продолжения ;)

  • @bov
    @bov 6 лет назад

    Прикольно.

  • @YevhenZinhalov
    @YevhenZinhalov Год назад

    Отлично. Для меня актуально 25.03.2023

  • @colonizatorgg5960
    @colonizatorgg5960 7 лет назад +8

    В сериале черное зеркало был момент : мужика после смерти заменил чат бот, обучившийся на истории его сообщений в сети.

    • @IgorShkarin
      @IgorShkarin 6 лет назад

      а какая серия?

    • @koylrust6482
      @koylrust6482 5 лет назад

      там вроде был не чат бот а полноценный робот с имитацией внешности, голоса и тп на основе его фотографий, видео из соц сетей и его личных вещей

    • @sharpes4253
      @sharpes4253 4 года назад

      @@koylrust6482 сначала ей подключили только чат бота, но потом она перенесла этого чат бота в мужика.

  • @olegbulav5771
    @olegbulav5771 Год назад

    Видно, что ведущий хорошо владеет механизмом обучения нейронных сетей...

  • @vladazzv3968
    @vladazzv3968 6 лет назад

    Добрый день. А подскажите , можно ли обучить сеть писать рассказы на заданную тему , ну например языком Шекспира и если да, то как это реализовать и на какие этапы разбить эту задачу? Заранее спасибо .

  • @crazyprometey
    @crazyprometey 7 лет назад

    А можно чуть объяснить что в данном случае были входящие сигналы, и сколько выходящих нейронов и что они сигнализировали?

  • @user-wp6ol4lc5n
    @user-wp6ol4lc5n 6 лет назад

    Спасибо за видео.
    Запустил обучение на CPU, спустя час обучения ункает UNK
    Не должно ведь ункать? ;)

    • @LehaRuSsIan
      @LehaRuSsIan 5 лет назад

      В твоём случая наверное несколько тысяч часов потребуется)

  • @YeltsinIsIlluminati
    @YeltsinIsIlluminati 4 года назад

    А можно ли гдето взять дамп уже обученной такой нейросетки с чатботом? и с ней работать

  • @Rossinante_Tachi
    @Rossinante_Tachi Год назад

    Я хотел создать именно чат бота простого, потом подумал над нейросетью и нашел ваше видео, всю ночь сегодня думал как она работает и догадался, оказалось просто тут обьяснять не буду но я нашел статьи по этой нейросети, вернее на какой нейронке она сделана и это Класификатор текста. Он есть на гугле и код тот же, даже есть куча готовых тестов для этой нейронки. Пример в видео нашел как она обучается по заголовку и тексту определять Новость это, Статья, и т.д. теперь думаю как бы к ней прекрутить генерацию текста ;-) да и не обязательно искать крутой камп чтобы ее обучить, сервис есть на гугле, видео вроде называлось Класификация текста нейросетью. Если у вас еще есть интерес к этому могли бы реанимировать своего чатбота ;-) я просто пишу на другом языке а нейросетками как хобби увлекаюсь, так что я бы точно заценил нового чатбота ;-)

  • @midizengm
    @midizengm 5 лет назад

    Существуют ли нейросети, которые конструируют другие нейросети? :) Все время слышу, что очень важно выбрать правильную архитектуру нейросети, так почему бы не доверить и эту задачу нейросети?

  • @diaszhumagaliyev2713
    @diaszhumagaliyev2713 5 лет назад

    Здравствуйте! Подскажите пожалуйста, можно - ли подключить чатбота к ватсап группе или телеграмм, для создания словаря? И если кратко сможете объяснить как это сделать?

  • @SpookyAmbassador
    @SpookyAmbassador 5 лет назад

    42:04 Божее я угораю :DDD

  • @atlant1707
    @atlant1707 6 лет назад +1

    Спасибо, но что такое рути?

  • @mygodishe
    @mygodishe 7 лет назад +2

    Подскажите пожалуйста, наверняка проводят исследования с самопорождающейся архитектурой нейронной сети. Когда нейронная сеть начинается с примитивной модели, и по мере обучения усложняется в тех местах, где это необходимо, добавляет память, чтоб хранить разные контексты и прочее. Как это называется? Чтоб нагуглить статьи.

    • @KovalevskyiAcademy
      @KovalevskyiAcademy  7 лет назад +6

      На последнем 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

    • @mygodishe
      @mygodishe 7 лет назад

      Круто! Спасибо :)

  • @paradontaz-loltftlorwr8301
    @paradontaz-loltftlorwr8301 7 лет назад +4

    просто отлично, тот самый видео пример на амазоновских вычеслительных системах, подскажите, можно ли повысить число хайден лэирс и нейров/нов и каков будет результат?просто гениальная идея снимать дампы своих чатов тех же whatsapp & telegram, прогонять их раз в год и оставить после своей смерти вполне способный к общению мемориал...подскажите примерно, как можно связать предыдущий диалог с последующими?

    • @KovalevskyiAcademy
      @KovalevskyiAcademy  7 лет назад +2

      Времени на много эксперементов небыло, так что трудно сказать по поводу скрытых слоев. Что касается связывания нескольких диалгово воедино то это довольно трудная задача я сейчас сам работаю в этом направлении =)

    • @paradontaz-loltftlorwr8301
      @paradontaz-loltftlorwr8301 7 лет назад

      Java Courses With Kovalevskyi например создать обновляемый массив последних, скажем, 10 диалогов и пропускать их в последующих скрытых слоях после основного?..да уж..я толком не знаю как объяснить идею

  • @mygodishe
    @mygodishe 7 лет назад

    Как можно посмотреть график сходимости в данном случае?

  • @oleg1174
    @oleg1174 7 лет назад +2

    Спасибо. Хотел спросить пару вопросов:
    * Если обучать в этом темпе на протяжении 24 часа, то сколько это будет стоить ?
    * Если мы останавливаем обучение, то продолжать обучение система будет с этой же итерации ?
    * Если мы уже обучили и результаты нас удовлетворяют, возможно ли сделать перенос на локальную машину, или непосредсвенное использование требует той же мощности ?
    * А что лучше в контексте цены конечного использования и эффективности если сравнивать тензор флоу и спарк мл либ ?

    • @KovalevskyiAcademy
      @KovalevskyiAcademy  7 лет назад +4

      > Если обучать в этом темпе на протяжении 24 часа, то сколько это будет стоить ?
      Стоимость машины 1$ в час.
      > Если мы останавливаем обучение, то продолжать обучение система будет с этой же итерации ?
      Да, если указать все те же параметры и те же пути, она пожхватит последний checkpoint.
      > Если мы уже обучили и результаты нас удовлетворяют, возможно ли сделать перенос на локальную машину, или непосредсвенное использование требует той же мощности ?
      Да, можно переместить данные checkpoint*.index/meta (с самым большим номер) и можно использовать локально. Так как это не обучение то спокойно можно использовать версию TF на CPU/RAM.
      > А что лучше в контексте цены конечного использования и эффективности если сравнивать тензор флоу и спарк мл либ ?
      К сожалению почти не использовал Spark ML, так что мало что тут смогу Вам посоветовать или что подсказать =(

    • @IgorShkarin
      @IgorShkarin 6 лет назад

      Спасибо за ответ.
      Задумался, вот обучу, а дальше, постоянно на АВС обучать? Ок, значит можно еще и перенести. Супер.
      К слову.
      Начал заводить инстанс нужный - не дает, лимит пишет. Жду тех поддержку, когда дадут разрешение.

  • @olegmykolaichenko6570
    @olegmykolaichenko6570 7 лет назад +1

    удалять можно в одну строку, только аргументами
    rm -rf 1 2 3 *regex* /tmp other

  • @user-xh8jg2fh4k
    @user-xh8jg2fh4k 6 лет назад +1

    А можно ли в файле с диалогами вместо английского языка использовать диалоги на русском?

  • @vasiliystepanov7423
    @vasiliystepanov7423 5 лет назад +1

    Эй, а не ваша ли это статья на Хабре?

  • @user-lw3yo9je6r
    @user-lw3yo9je6r 7 лет назад +4

    Все здорово, но bay-bay это бухта-бухта

  • @ieronimbosh5233
    @ieronimbosh5233 7 лет назад +1

    Спасибо за отличное видео, только непонятно почему используется для вычисления видеокарта?(Почему нельзя использовать просто мощный процессор и много оперативной памяти?)

    • @xyzw777
      @xyzw777 7 лет назад

      вряд ли месяц стабильные 220v будут)

    • @KovalevskyiAcademy
      @KovalevskyiAcademy  7 лет назад +3

      CPU не расчитан на выполнения задач такого типа, он выполняет более общие задачи, ровно по этим же причинам собственно и нужен GPU. В теории можно 3D игру рендерить на CPU, и так собственно когда то и было =) Однако именно потому что это ОЧЕНЬ медленно и появились 3D ускорители. Соотвественно работая с ними можно в разы повысить скорость тренеровки сети. К слову сказать в Google разработали даже отедльный чип TensorProcessing Unit (TPU) который заточен ровно под эту задачу - работу с сетями.

  • @user-cj7mb4hb9z
    @user-cj7mb4hb9z 4 года назад +2

    Здравствуйте , а можете пожалуйста отдельный целый урок как сделать такого чат бота дартвейдера на русском языке , с кодом и прочим ))
    Спасибо

  • @user-sl2fb1xz8g
    @user-sl2fb1xz8g 6 лет назад

    Ребята, с какой простейшей нейронки можно начать практическое освоение данной технологии?

  • @user-co7wd3cv4x
    @user-co7wd3cv4x 7 лет назад

    Подскажите пожалуйста, как g2 или p2 инстанс купить? Мне только t2.micro дают почему-то...;)

    • @IgorShkarin
      @IgorShkarin 6 лет назад

      разобрались? мне тоже только малышей дают. написал админам

  • @Decter49PRO
    @Decter49PRO 7 лет назад +25

    лол не дарк а дарт вейдер )

    • @KovalevskyiAcademy
      @KovalevskyiAcademy  7 лет назад +3

      О, точно =)

    • @bendervanga
      @bendervanga 6 лет назад

      сделайте чат бота дарта сидиуса будет про дарта плэгаса рассказывать

  • @DenisSalmanov
    @DenisSalmanov 7 лет назад

    а если это делать на обычной домашней видухе типа 1050ti? во сколько раз медленнее будет происходить процесс?

    • @xyzw777
      @xyzw777 7 лет назад +1

      он что-то про вылеты от нехватки vram говорил и это при 11гб

  • @filiinisbro9745
    @filiinisbro9745 7 лет назад

    gtx 1060 подойдёт?

  • @HomenProject
    @HomenProject 7 лет назад

    А можно ли сделать на php на денвере сеть и самостоятельно у себя на пк обучить, да еще сделать, чтобы при общении постоянно обучалась?
    Чат-бота, который будет помнить историю переписки с человеком и не терять нить разговора? Если это сделать, объединив сеть и специальные базы и алгоритмы. Или это уже не будет нейросеть? Например, как у человека кроме мозга с его сетью, есть органы чувств, инстинкты(как биос над основной ОС): зависть, инстинкт размножения, самосохранение...
    Еще человек делает что-то вроде квестов. Например в чате это может быть угадывание чего-либо. А для этого чат должен переключиться в режим "квест", он будет помнить, что начал задавать вопросы и получать ответы, анализировать их, чтобы прийти к финалу при выполнении квеста "угадывание". И добавить в него "факты", база с фактами от разработчика, которые бот не может перезаписать в своей сети, дабы избежать таких умозаключений как, например, "я люблю геноцид". И считать себя ботом с именем, который дал разработчик, а не писать всякую рандомную фигню и уж тем более научиться говорить свое имя от собеседников.
    Можно ли эти данные моделировать отдельно от нейросети, хранить в специальных файлах, или нужно сделать дополнительное ответвление в нейросети с другой структурой, в которое скормить эти данные?
    И еще, можно сделать, чтобы программа понимала образы, а уж на основе образов строила предложения? Например категории образов: действие, объект, субъект, свойство, причина, следствие, время, место.
    Пример: [причина] "Я(субъект) вчера вечером(время) заболел(действие)." [следствие]: "Поэтому не пошел(действие) сегодня(время) на работу(объект)."
    Вообще изначально забить его базу фактами, чтобы ему не пришлось потом эти данные получать самостоятельно. А потом уже пусть постепенно доучивается. Вроде так можно и на CPU сделать, ведь при добавлении фактов не нужны вычисления сложные, или так нейросети не делаются?
    Или это не сделать на нейросети? И вообще на Php невозможно реализовать в силу медленной работы для такой задачи?

    • @KovalevskyiAcademy
      @KovalevskyiAcademy  7 лет назад

      Я мало работал с PHP, надеюсь что там есть какие либо low-level hooks для вызова кода на Python или С++, ну или может есть готовые обвертки позволяющее работать с натренированными моделями Tensorflow.

    • @HomenProject
      @HomenProject 7 лет назад

      Ну а если просто для начального изучения без всяких готовых модулей на PHP можно примитивные сети делать и обучать? Или скорость работы движка не позволит и лучше не лезть в изучение? Раз уже сильно шагнули технологии в этом направлении, в азы не вникать сильно, а из готовых модулей конструировать сети и играться на уровне пользователя?

    • @desbiger
      @desbiger 6 лет назад

      Есть модуль PHP FANN это модуль для работы с нейронками.

  • @thebigfrogg
    @thebigfrogg 6 лет назад

    В актуальной версии Tensorflow не могу найти translate. Может знаете где он сейчас?

    • @oitagelbert5278
      @oitagelbert5278 4 года назад

      Разобрался с проблемой?

  • @user-gu9jg6ei4h
    @user-gu9jg6ei4h 7 лет назад +1

    А в телеграмме можно бота поднять?)

    • @BigBoss-ml2rt
      @BigBoss-ml2rt 5 лет назад

      Можно, используй методы API с пайтоном, лично у меня бот работает с инстаграмом

  • @IgorShkarin
    @IgorShkarin 6 лет назад

    Запускаю скрипт для обучения:
    No module named models.rnn.translate .. =( ест подсказки?

  • @LehaRuSsIan
    @LehaRuSsIan 5 лет назад

    Правильно ли я понимаю мы создали нейронную сеть с 1024 нейронами на вход поступают диалог (вопрос+ответ) (и таких диалогов очень много). Собственно каждая итерация "пропускает" через всю нейронную сеть связку вопрос+ответ и соответственно настраиваются коэффициенты весов, "улавливая" какие-то закономерности типо а вон в конце стоит точка а в начале с большой буквы и т.п., чем больше диалогов и времени, затраченного на обучение тем и будет "умнее" нейронная сеть? А ведь это только 1024 (ох, как я люблю эту цифру) нейронов совсем копеечное количество, там наверняка потребуется несколько миллиардов... Да, очень интересная вещь, эти нейронные сети, до сих пор не могу переоценить их потенциал.

    • @user-sc5tw9oj9t
      @user-sc5tw9oj9t Год назад

      Ты вообще не понимаешь, как это работает! какие нафиг 1024 нейрона? Для такого простого бота хватит и 10. Сначала изучи машинное обучение и подумай, как ты будешь обучать миллиарды нейронов.

  • @drimef085
    @drimef085 4 года назад

    Что будет если сделать следующее:
    Если бот нашел что ответить то он отвечает,
    Если нет, то он спрашивает: вв можете объяснить что это означает?
    И пользователь вводит как на это отвечать. А дальше идёт обучение бота на данное слово.

  • @IgorShkarin
    @IgorShkarin 6 лет назад

    Что б проверить какую видео использует, захожу в питон, там ввожу import tensorflow as tf - и ничего не пишется. подумал и новую строку, без какой либо выдачи. В чем дело то?

    • @drimeF0
      @drimeF0 3 года назад

      Так импорт то произошёл... Правда кажется это уже не поможет )

  • @user-hv9rt7ye6h
    @user-hv9rt7ye6h 5 лет назад

    Почему нельзя тренировать на процессоре?

  • @user-sy8vc6iz2x
    @user-sy8vc6iz2x 7 лет назад

    Не знаю уместно ли здесь спрашивать, но я пытаюсь все запустить на своем компе.
    При запуске converter.py выдает ошибку : ImportError: No module named 'scipy'
    Хотя scipy устанавливал(pip3 install scipy).
    Windows 7, python 3.5.2, TensorFlow тоже установлен

    • @voidytb
      @voidytb 6 лет назад

      у меня порешалось установкой scipy и Numpy+MKL со стрёмного места:
      www.lfd.uci.edu/~gohlke/pythonlibs/#numpy
      www.lfd.uci.edu/~gohlke/pythonlibs/#scipy

    • @voidytb
      @voidytb 6 лет назад

      *по рекомендации с www.scipy.org/install.html#individual-packages

    • @voidytb
      @voidytb 6 лет назад +1

      запустил локально на Вин10. если вдруг поможет - github.com/voidgit/models

  • @user-kn9ns7tn5v
    @user-kn9ns7tn5v Год назад +1

    Я которой программирую на телефоне 😐

  • @user-zr2uk6pv5m
    @user-zr2uk6pv5m 7 лет назад +3

    Скажите пожалуйста, должен ли я досконально знать как математически устроены алгоритмы машинного обучения, или достаточно поверхностного понимания их работы, что бы получить работу в этой области

  • @user-cw9iy8fm7w
    @user-cw9iy8fm7w 5 лет назад

    Это же замечательно!
    Берём статьи с хабра по программированию в один файл, кулинарные рецепты в другой и можно открывать новый сайт новейших кулинарных рецептов. Можно наоборот и открыть новый сайт по программированию.
    Всего 100 строк кода и бесконечное море свежайшего контента!

  • @MineTest_game
    @MineTest_game 6 лет назад

    Ребята, скажите, а можно нейронную сеть запустить на карточках AMD?

  • @pxsource1
    @pxsource1 5 лет назад +1

    Это сбербанк

  • @adambright5416
    @adambright5416 5 лет назад

    И только русский человек, чтобы выполнить ls в консоли листает вверх историю, хоть там и 100 команд, вместо того чтоб написать ls :D :D :D

  • @solomondarthemuth2667
    @solomondarthemuth2667 7 лет назад +1

    Осталось научить сетку отвечать на упячко-сленге!

  • @SuperDoctorBang
    @SuperDoctorBang 4 года назад +1

    это не джава

  • @xTonn1k
    @xTonn1k 7 лет назад

    13:32 Ихние

  • @marslassa2938
    @marslassa2938 3 года назад

    С каких пор базы данных стали нейросетью ? ))) Эммитация оргазма никогда не заменит оргазма и не повторит его )))

  • @alexnickolaev
    @alexnickolaev 7 лет назад

    у вас много грамматических ошибок при общении с сетью, поэтому она тупит больше, чем должна, кажется )

    • @LehaRuSsIan
      @LehaRuSsIan 5 лет назад

      Вот кстати интересно ведь диалоги из фильмов получаются "слишком правильные", если б там были грамматические, орфографические, пунктуационные ошибки то она была "умнее", но и опять таки обучатся ещё дольше.

  • @user-nj8vn3xm1p
    @user-nj8vn3xm1p 4 года назад

    Как можно постоянно использовать англицизмы и при этом совершенно не знать грамматику английского?

    • @seologia
      @seologia 4 года назад +2

      Зис ис Раша, мазафакер!!!1111

  • @franciscrowley5731
    @franciscrowley5731 6 лет назад +5

    ЗАКРЫЛ КОГДА УСЛЫШАЛ ПРО 6 ДОЛЛАРОВ))

  • @Anglina1433
    @Anglina1433 3 года назад

    это полный развод учите логику и все будет понятно