Модераторы: Poseidon

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Программа-собеседник(Нейросеть), помогите 
:(
    Опции темы
sibedir
Дата 24.12.2008, 00:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 5.12.2008
Где: Россия Алтайский кр. г.Барнаул

Репутация: нет
Всего: нет



Цитата

кстати вообще предлагаю сей материал взять за основу....

Но это же описание нейросети классифицирующей входные данные. Этот материал ни в коей мере не сможет служить основой для решения нашей задачи.
 
Цитата

придумать способ подачи текста на вход сети.
тоесть слово или целове предложение целиком нужно представить в виде виде сигнала(или сигналов) в диапазоне [1..0]. насколько я знаю нейронные  сети(во всяком случае известные мне) работают только с такой входной информацией

Не факт. Четкого понятия о типе входных сигналов не существует, как в принципе не существует и каких либо других ограничений в нейросетях. В структуру нейросети могут внедрятся нейроны работающие как с 0 и 1, так и с целыми и вещественными типами чисел. Нейроны могут получать и выдавать даже структурированные типы данных такие как массивы или классы. Все зависит от фантазии разработчика. Именно от фантазии, потому что четких правил по созданию основного элемента сети, нейрона, как я уже говорил, не существует. Здесь можно опираться только на личный опыт и интуицию (которые тоже есть ни что иное, как результат работы нейросети  smile  ).

Рассуждения на тему
Традиционные нейросети предполагают строго определенный диапазон входных данных. Тоесть, если сеть создана с окном входных данных длинной 100 ячеек, то каждый раз формируя входной вектор, мы будем должны определить все 100 входных значений. Допустим, входными данными будут символы. Каждый символ - 1 байт. Сложно представить себе предложение длинней 256 символов, которое при этом нельзя было бы разбить на несколько более коротких предложений. Создаем входной слой из 256 нейронов. Но предложения длиннее 100 символов на практике встречаются довольно редко. Что же делать с оставшимися 150 нейронами. Отправим им 0. Да хоть что, это не важно, главное каждый раз заполнять остаток одними и теми же значениями, чтобы сеть быстрее научилась интерпретировать их как лишнюю информацию. В итоге, нейроны оказавшиеся в конце входного вектора мало чем повлияют на ход работы всей сети.
Для решения этой проблемы можно организовать структуру сети так, чтобы каждый нейрон входного слоя сообщался с каждым нейроном следующего по порядку слоя (первый внутренний). Так мы получим распределение информации? Нет, так мы получим ее распыление. Поясню. Биологические нейросети построены таким образом, что если из них физически удалить часть нейронов, то они останутся вполне трудоспособными. Я называю это явление образом мышления. В отличии от программных алгоритмов, извлечение из которых даже незначительной части кода, приведет к полной потере их трудоспособности, нейросети обладают свойством голограммы, когда каждый элемент системы знает все ни о чем и ничего обо всем. Для достижения этого эффекта входную информацию нужно распределить по всей нейросети. Эту задачу следует поручить, как мне кажется, специальному участку сети – сети распределения образа. Главное условие – каждый входной нейрон, должен быть связан с каждым выходным нейроном сети распределения, но при этом количество связей одного нейрона с нейронами следующего уровня свести к достаточному минимуму. Только так мы сможем получить распределение информации без потерь. Если же распределить информацию слишком быстро, то мы потеряем ее информативность. На языке математики это звучит примерно так. Пусть вектор X – вектор входных данных, а Y – вектор выходных данных. В идеале нужно получить такую зависимость f(X) = Y, что при изменении любого Xi менялись бы все значения вектора Y, но при этом не существовало бы ни одной пары векторов X, при которых бы f(X1) = f(X2).
user posted image
И учтите, что подобная проблема встретится не только на этапе ввода данных, но и при их получении. Ведь предложение-ответ, тоже должно быть ограничено конечных числом символов (ну или слов).

Теперь представьте, что сеть создана, и вы приступили к ее обучению. Она не знает слов, она оперирует лишь с символами. Я на 100% уверен, что в процессе обучения сеть еще очень-очень-очень-очень и очень долго будет выдавать вам белиберду вроде:
"ьВG3f4!фsa№dв Рf5?gх№ъhПёъr!@3e*п@Fаe:ыл?*оy а/zр............
Ведь, что бы научить нейросеть словам, нужна очень-очень-очень и очень большая сеть, а большую сеть долго и обучать.
Что ж, можно создать словарь и забить в него все слова (Как уже предлагалось). Нужно будет также занести в базу знаки препинания. Можно даже представить слово в виде набора индексов 1-015-365248-00-011, где первый индекс указывает на его тип (знак препинание или собственно слово), а  каждый следующий индекс – это часть слова: приставка, корень, суффикс, окончание и т.д. или номер знака препинания. Словарь при этом нужно сделать с запасом, для добавления данных, а все входные слова проверять на их наличие в базе, и если слово отсутствует предлагать исправить ошибку или добавить слово в словарь (как в Word'е).

З.Ы.: Приношу свои извинения за использование собственных терминов и непонятных определений. Я, как и вы, не являюсь специалистом нейронных сетей, и как тот чукча, что вижу, то и пою. Если что переспрашивайте.

Добавлено через 10 минут и 7 секунд
Цитата(shara)

именно так.

Цитата(sibedir)

Нет, не так

Гы-гы. Ну эт я видимо не понял, что сказал GoldFinch, но это, наверно, потому, что GoldFinch сам не понял, что сказал.  smile 
PM MAIL   Вверх
GoldFinch
Дата 24.12.2008, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 1
Всего: 26



Цитата(sibedir @  24.12.2008,  00:10 Найти цитируемый пост)
Нейроны могут получать и выдавать даже структурированные типы данных такие как массивы или классы. Все зависит от фантазии разработчика. Именно от фантазии, потому что четких правил по созданию основного элемента сети, нейрона, как я уже говорил, не существует.

### у вас фантазия

Как я помню, нейросеть состоит из нейронов. Каждый нейрон это пороговый сумматор, который вычисляет взвешенную сумму чисел на входе, сравнивает ее с порогом и выдает 0 или 1. Какие массивы? какие классы? У вас на входе N чисел - на выходе M бит двоичных разрядов (M бит там практически никогда не будет)

Это сообщение отредактировал(а) GoldFinch - 24.12.2008, 16:16
PM MAIL ICQ   Вверх
GoldFinch
Дата 24.12.2008, 16:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 1
Всего: 26



насчет того чтобы подавать на сеть 256 символов и получать от нее слова о_О
впринципе идея хорошая, только с такой низкой энтропией входных\выходных данных и большой размерностью входных данных ,у вас сеть будет наверное терабайты занимать, в лучшем случае
опять же обратной связи нету
PM MAIL ICQ   Вверх
Romikgy
Дата 24.12.2008, 17:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7325
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 9
Всего: 146



Цитата(GoldFinch @  24.12.2008,  15:11 Найти цитируемый пост)
который вычисляет взвешенную сумму чисел на входе, сравнивает ее с порогом и выдает 0 или 1

это через чур жесткая мат модель , можно на выходе иметь не только 0 или 1 но и промеж. значения 0.5 0.7 и т.п.


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
GoldFinch
Дата 24.12.2008, 18:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 1
Всего: 26



Romikgy, как??? он же сравнивает с порогом - либо больше порога "0", либо меньше "1"
как там получить промежуточные значения? 

можно конечно просто вычитать порог и допустим както нормировать, но я хз есть ли в этом какой-то смысл %)
PM MAIL ICQ   Вверх
sibedir
Дата 24.12.2008, 19:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 5.12.2008
Где: Россия Алтайский кр. г.Барнаул

Репутация: нет
Всего: нет



На счет входных-выходных данных
Цитата

Искусcтвенные нейронные сети (ИНС) — математические модели, а также их программные или аппаратные реализации, построенные по принципу организации и функционирования биологических нейронных сетей — сетей нервных клеток живого организма.

А где вы видели в биологии 0 и 1. Процесс сообщения м/у нейронами в реальности - это процесс образования сложных химических элементов под воздействием электрических импульсов, которые в свою очередь приводят к выработке новых импульсов. Химический элемент - ни что иное как структура, а электрический импульс - вещественное число. А то, о чем говорите вы - это упрощенная имитация описанного процесса, придуманая, кстати, еще в 50-е годы, когда о современных ЭВМ и объектно-ориентированном программировании понятия не имели. Я не говорю о том, что 0 и 1 ушли в небытие. Просто предлагаю свой вариант.
Вся штука в том, что любой нейрон, работающий даже со сложными структурированными данными, можно имитировать блоком нейронов, работающими с битами. Это упрощение не всегда положительно скажется на работе нейросети в целом. Построить из кирпича можно здание любой формы, но панельное строительство еще никто не отменял.
Цитата(GoldFinch)

насчет того чтобы подавать на сеть 256 символов и получать от нее слова о_О
впринципе идея хорошая, только с такой низкой энтропией входных\выходных данных и большой размерностью входных данных ,у вас сеть будет наверное терабайты занимать, в лучшем случае

Я ж и говорю. С символами ничего не получится, надо сразу со словами работать. Хотя и со словами вряд ли что-то дельное получится. Я думаю она и будет весить около того, да еще к тому же в процессе обучения застопорится. Извиняюсь за такое жесткое сравнение, но вы попробуйте слепого ребенка лишонного осязания научить разговаривать. Сами слова по себе не несут никакой смысловой нагрузки без некого фона. Если вы говорите ребенку "Привет", когда появляетесь откуда-то, то ребенок поймет, что слово "Привет" - это слово, которое говорят при встрече. Так что программу придется снабдить механизмами осязания, ощущения реальности, пусть и виртуальной реальности. И при этом в разговоре оперировать исключительно доступными ей понятиями.
Кстати, хорошая идея. Можно вообще свой язык придумать простенький. Создать виртуальную среду, поместить туда сеть. Создать механизмы влияния сети на среду и наоборот. Короче, сделать виртуальный аквариум. Туда "таракана" говорящего. Во развликуха будет.  smile  smile 
А парить мозги создавая собеседника я вас всетаки отговариваю. Ничего не выйдет. Не для ПК задачка.
Цитата(GoldFinch)

опять же обратной связи нету

Про связь не понял, поясни.
Цитата(GoldFinch)

как??? он же сравнивает с порогом - либо больше порога "0", либо меньше "1"
как там получить промежуточные значения? 

А не обязательно их с порогом сравнивать. Можно тупо складывать, умножать, делить. Да мало ли еще операций, логических только с десяток наберется: НЕ, И, ИЛИ, НЕ ИЛИ, ЛИБО-ЛИБО, ЕСЛИ-ТО и т.п.

Это сообщение отредактировал(а) sibedir - 24.12.2008, 20:11
PM MAIL   Вверх
GoldFinch
Дата 24.12.2008, 20:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 1
Всего: 26



sibedir, обратная связь это я имел ввиду что при диалоге надо учитывать не только реплики собеседника, но и свои прошлые реплики и "мысли" (состояния)
т.е. подавать сигналы с выхода на вход
PM MAIL ICQ   Вверх
sibedir
Дата 24.12.2008, 20:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 5.12.2008
Где: Россия Алтайский кр. г.Барнаул

Репутация: нет
Всего: нет



Ну да. Этим наверно и будет заниматься механизм восприятия. Имитация слуха.
PM MAIL   Вверх
Romikgy
Дата 24.12.2008, 20:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7325
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 9
Всего: 146





--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
GoldFinch
Дата 24.12.2008, 20:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 1
Всего: 26



Romikgy, спасибо, это я подзабыл
PM MAIL ICQ   Вверх
Romikgy
Дата 24.12.2008, 20:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7325
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 9
Всего: 146



GoldFinch, олвейс велкаме smile

Это сообщение отредактировал(а) Romikgy - 24.12.2008, 20:47


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Dims
Дата 8.2.2009, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1016
Регистрация: 21.11.2006

Репутация: нет
Всего: 11



Я думаю, не сможет нейронная сеть разговаривать.

Суть нейронной сети -- в аппроксимации функции или нескольких функций. То есть, нейронной сети даётся N штук входных параметров (входов), она "думает" и выдаёт на выходе M штук выходных параметров (выходов). 

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

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

Входные параметры сети должны быть плавными. Мы не можем просто закодировать каждое слово своим числом. Например, мы не можем присвоить слову "мир" значение 1000, а слову "война" значение 1001, потому что значения получатся близкие, а смысл слов, наоборот, далёкий. То есть, при такой кодировке сеть будет путать противоположные значения между собой. Поэтому, нужно учесть синонимию, а это само по себе нетривиальная задача. Скажем, представить каждое слово через набор чисел, обозначающий его близость к группе заранее выбранных synset-ов.

Далее, непонятно, как учесть порядок слов и их взаимосвязь.

В общем, мне кажется, нейронная сеть может использоваться как какой-то один блок в программе, ведущей беседу, но нельзя на неё взвалить всю работу.
PM MAIL   Вверх
Dims
Дата 8.2.2009, 16:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1016
Регистрация: 21.11.2006

Репутация: нет
Всего: 11



Цитата(Cycle @  22.9.2008,  07:35 Найти цитируемый пост)
вся проблема, что на обучение у вас может уйти огромное количество времени. 

Время может и не помочь: в какой-то момент сеть просто перестанет улучшать характеристики, и всё. Сколько её ни обучай потом, лучше уже не будет никогда.

Фактически, любой алгоритм обучения -- это поиск максимума многомерной функции. Представьте, что вы искали самую высокую точку на гористой местности. Шли всё время вверх и поднялись на холм. Но откуда вам знать, что именно этот холм самый высокий? Может быть, в ста километрах к юго-востоку есть высоченный пик, но ничего вокруг об этом не говорит. Вы так и застрянете на своём холме.

То же самое происходит и с нейросетью. 
PM MAIL   Вверх
shara
Дата 9.2.2009, 00:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 344
Регистрация: 29.6.2004
Где: печенье?

Репутация: нет
Всего: 2



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

Dims правильно  подметил про "войну" и "мир" - тяжело, практически нереально, описать всю многогранность человеческого языка. по этому нужно чтобы программа "училась" на разговоре с собеседником...  я видел пару скриптовых говорилок -  меня поразило то насколько связным и полным может быть диалог если программа имеет достаточную базу по теме разговора, причем эту базу можно было легко вручную дополнить самому... а если это будет каким-то образом делать сама же программа - я думаю что это будет очень прилично  смотреться


Это сообщение отредактировал(а) shara - 9.2.2009, 00:49


--------------------
   с точки зрения аэродинамики шмель не может летать  
PM MAIL   Вверх
mihend
Дата 4.3.2009, 13:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 3.3.2009

Репутация: нет
Всего: нет



         Здраствуйте,
    
     Простите меня за правопис.Я иностранец.
     Идея XpideX - покрить тест Тюринга.
     Последние 25 лет я гуляю по горам и думаю как ето можно сделать.
     Вот мое определение "Что такое жизнь" :
            Каждая нейронная сеть с гистерезиснъим ввод.

    Нейронная сеть-ето мозг.Надо снабдить его с телом.Например шахматъи.Тогда емоции игръи связъивается с лингвистичнъие отметки (играюшего) и произходить процес обучения.Потом ети асоциации можно анализировать и рекомбинировать по сходству и контрасть.

Это сообщение отредактировал(а) mihend - 4.3.2009, 13:36
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.2021 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.