Русское лото / Нейронные сети лотерея

Робот для переговоров по нейронной сети

Все хорошие времена! Я студент, для задания я выбрал тему «Информационные нейронные сети» (INS). Задачи, где нужно работать с числами, решались довольно просто. И я решил усложнить систему, добавив текстовую обработку. Таким образом, я поставил перед собой задачу создать «собеседника-робота», который мог бы связаться по определенной теме.

Поскольку тема общения с ботом довольно широка, я не ценю диалог в целом (привет товарищу Тьюрингу), рассматривается только рассмотрение «ответа собеседника» на высказывание человека.

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

Архитектура 1. Двухслойная сеть прямого распространения с одним скрытым слоем

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

Каждое слово кодируется двумя целыми числами, от одного (ноль отвечает за отсутствие слова) - номер категории и номер слова в этой категории. Он предназначался для хранения слов, похожих на значение или тип (например, цвета, наименование) в «категории».

Таблица 1

вы отлично страшный привет

Категория 1
{ } Категория 2
Категория 3
Категория 4
1
2
3
4
5
6
7
ваш
вы
ваш
{ } вы
я


отлично
отлично
фантастически
отлично
отлично
отлично


ужасный
отвратительный
плохой
отвратительный


привет
привет
привет
не болен


Для нейронной сети данные нормализуются, сводятся к спектру $ inline $ [0, 1] $ inline $. Номера категорий и слова имеют высокое значение $ inline $ M $ inline $ номеров категорий или слов во всех категориях. Предложение переводится в реальный вектор фиксированной длины, недостающие части заполнены нулями.

Любое предложение (вопрос и ответ) может содержать не более 10 слов. Этот тип сети достигается с 20 входами и 20 выходами.

Число ссылок в сети для запоминания

N

примеров рассчитывалось по формуле

где

m
- количество входов, n - количество выходов, N - количество примеров. Количество сетевых подключений с одним скрытым слоем, состоящим из

H

нейронов

, из которых требуется количество покрытых нейронов



Для $ inline $ n = 20 $ inline $, $ inline $ m = 20 $ inline $, сделка заключается



В результате получаем зависимость числа скрытых нейронов от количества примеров:



Структура обучающей сети показана на рисунке 1.

Нейронные сети лотерея один Сеть реализована в MATLAB, обучение - это способ распространения обратной ошибки. Студенческая коллекция содержит 32 предложения ...

Большой и не обязательный ...

INS не смог понять более 15 предложений, как показано на следующем графике (рисунок 2). Ошибка рассчитывается как модуль для разности между выходной мощностью NA и требуемой.

Нейронные сети лотерея два Пример диалога (все вопросы из образца):


привет
  • здесь

сколько тебе лет
  • четыре месяца

ты хороший
  • Я не понимаю, что сказать

ты хороший бото
  • * Я не понимаю, что сказать *

дружба отличная
  • отлично

пока
  • см.

В результате тестирования другого числа примеров стало ясно, что даже выбор обучения INS запоминается с большим трудом (как видно из рисунка 2). Даже в миллионы эпох ошибка требуемого значения не сработала.

Архитектура 2. Двухслойная нейронная сеть прямого распространения

Нисходящим методом для кодирования слов для INS является горячее кодирование [4]. Суть в следующем: предположим, что в словаре есть $ inline $ D $ inline $ words в алфавитном порядке. Любое слово в таком словаре кодируется вектором длины $ inline $ D $ inline $, который содержит устройство на месте, правильное количество слов в словаре и нули в другом месте.

Для тестов был создан словарь из слов $ inline $ D = 468 $ inline $ и обучающего набора из 95 предложений. По предложению Национального собрания было подано 6 слов, и ответ был также оценен из 6 слов.

Количество нейронов в покрытом слое было определено в зависимости от количества соединений, количества примеров, которые сеть может выучить без ошибок.

привет тебе
  • Эй, хорошо быть человеком?

Человек должен быть отличным
  • до

что ты любишь
  • Я люблю учиться

что тебе нравится
  • Разве это не хорошо?

как ты
  • * Я не понимаю, что сказать *

здорово быть хорошим
  • А как же я?


Из плодов видно, что теперь система может запоминать большое количество слов. Практическая победа ... но есть и другая проблема - определение синонимов и подобных слов [4].

Архитектура 3. Двухслойная нейронная сеть прямого распространения

с одним скрытым слоем и кодировкой word2vec


Чтобы решить проблему сходства между словами и синонимами, я решил попробовать word2vec [4], который позволяет вам при необходимости кодировать коды.

Для тестов работы сети мы использовали словарь word2vec для векторов длины $ inline $ D = 50 $ inline $, который обучался на базе обучения нейронной сети.

При входе в нейронную сеть доставляется 6 слов (вектор длиной 300), и предлагается получить ответ, также состоящий из 6 слов. В обратимом кодировании вектор фразы делится на 6 векторов слов, где некоторые словари ищут очень вероятное косинусное соответствие угла между векторами $ inline $ A $ inline $ и $ inline $ B $ inline $: { }

Но даже при такой реализации word2vec не устанавливает надлежащих связей между словами с точки зрения русского языка. Для разработки словарного запаса, в котором синонимы будут особенно близки, было сформировано учебное здание с сгруппированными синонимами, которое по смыслу сливалось друг с другом:


ДЛЯ МЕНЯ МЕНЯ, МЕНЯ, МОЯ, МОЯ, МОЯ , ВЫ СДЕЛАЛИ ДЛЯ ВАШИХ. } КТО ТАК

РОДИЛСЯ РОДИЛСЯ В результате такого представления нет необходимости запоминать большое количество синонимов, которые могут получить аналогичный ответ (например, «привет», «привет», «добро пожаловать»). Например, только привет - привет участвовал в учебной сессии, другие ответы были получены из-за огромной косинусной близости к "привет", "привет" и "приветствие".
Лодка Ботов Боты Боты Ботов






привет

ПРИВЕТ Я МОГУ ВЫБРАТЬ ОТВЕТ Но наряду с этим, из-за огромной близости синонимов в ответе (разговор = разговор = разговор = ..., я = я = мой = я = ...), они часто путаются, когда вопрос слегка перефразировано («Как ты учишься?» Вместо «Как ты учишься у человека?»).
  • привет
ПРИВЕТ
  • добро пожаловать
HELLO Robots
вы можете сказать
  • как учить
Я говорю и повторяю слово
  • ты хороший
Большое спасибо за то, что ты поправляешься

ДТП

Как вы можете видеть, когда я пытался использовать INS для общения с человеком, у меня было две блондинки: одна не может прекрасно понимать 15 предложений, а другая много понимает, но ничего не понимает.

Судя по описаниям как на Хабрахабре, так и на других сайтах, не все сталкиваются с этой проблемой. Поэтому возникает вопрос: где похоронена собака? Какой подход следует использовать, чтобы получить INS, который может запомнить и понять по крайней мере 100 - 200 предложений?

Кто сталкивался с подобными проблемами, мне нужны советы и предложения.

Фото людей выигравших в лотерею
Как нас обманывают в лотерею
Лотерея рапидо как играть
Всероссийская тиражная негосударственная благотворительная лотерея
Лотерея лото забава