Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Разработка информационных систем Новый топик    Ответить
 Обучение нейронной сети  [new]
Guest_neural_net
Guest
Помогите разобраться с нейронными сетями. Нашел в интернете много статей, но во всех них используются «сухие» понятия и сложные формулы, а конкретных для понимания примеров очень мало.
Хотелось бы, чтобы нейронная сеть понимала, что 3+2=5. Для этого нужно обучить ее. И вот тут возникают вопросы, как происходит процесс обучения. Может кто-нибудь объяснить это на данном примере. Заранее спасибо.
9 июл 14, 09:27    [16279097]     Ответить | Цитировать Сообщить модератору
 Re: Обучение нейронной сети  [new]
mad_nazgul
Member

Откуда:
Сообщений: 4213
Guest_neural_net
Помогите разобраться с нейронными сетями. Нашел в интернете много статей, но во всех них используются «сухие» понятия и сложные формулы, а конкретных для понимания примеров очень мало.
Хотелось бы, чтобы нейронная сеть понимала, что 3+2=5. Для этого нужно обучить ее. И вот тут возникают вопросы, как происходит процесс обучения. Может кто-нибудь объяснить это на данном примере. Заранее спасибо.


Тут как и с обычными живыми существами.
Долго показываешь, что 3+2=5, пока система не запоминает, что 3+2=5.
Т.е. дожна быть обратная связь.
На вход подается 3+5, на выходе идет всякая фигня.
Если равно 5, то система "поощряется" в остальных случаях нет.
Все <:o)
9 июл 14, 10:21    [16279388]     Ответить | Цитировать Сообщить модератору
 Re: Обучение нейронной сети  [new]
Guest_neural_net
Guest
mad_nazgul,
Вот как раз эта часть мне и непонятна.
Получается, есть 2 переменные: a и b. Каждая переменная может принимать какое-нибудь конкретное значение (входные данные), по которым идет процесс обучения.
a=2; b=4; result=6
a=2; b=3; result=5
a=2.5; b=3; result=5.5
После многократного поступления входных данных, система просто должна определить, что, например, для a=3 и b=2 наиболее частый результат это 5.5. Получается, система обучилась, что 3+2=5.5?
После такого обучения сеть должна быть самообучаема, т.е. при поступлении нового входного значения, например: a=3; b=2; result=4.5, какое значение сеть будет считать результатом 3+2? Последние входные данные как-то ведь должны повлиять на обучаемость - как в этом случае опять должен происходить процесс обучения? Должны учитываться все более ранние входные данные + последнее и на основе его будет браться самый часто встречаемый результат или условие, полученное при раннем обучении (3+2=5.5) + последние данные (3+2=4.5) и будет браться что-то среднее между 4.5 и 5.5?
9 июл 14, 11:17    [16279790]     Ответить | Цитировать Сообщить модератору
 Re: Обучение нейронной сети  [new]
mad_nazgul
Member

Откуда:
Сообщений: 4213
Guest_neural_net
mad_nazgul,
Вот как раз эта часть мне и непонятна.


Для этого и нужны "сухие формулировки и сложные формулы".

А на пальцах...
Предположим у вас есть капча/и на которой изображено "3+2" (это картинка)
Вы "учитель", что в результате должно быть 5.
Показываете капчу/и "ученику" и получаете ответ.
В начале ответы будут рандомны.
Но с течением времени поощряя за правильные ответы вы можете научить распознавать капчу "3+2".
Затем можно усложнить задачу показывая капчу "2+3".
В общем учите.
Т.е. распознается не конкретное число, строка и т.д., а образ.
В данном случае картинка.
9 июл 14, 12:02    [16280204]     Ответить | Цитировать Сообщить модератору
 Re: Обучение нейронной сети  [new]
Guest_neural_net
Guest
mad_nazgul,
По идее, даже я не должен знать, что 3+2=5, т.к. это не очевидно (может зависеть от системы счисления).
На примере капчи, можно просто задать, что если a=3 и b=2, то результат всегда 5. А система должна учиться, и основываться на ответах, которые даются при проверке капчи. Т.е. если при проверки капчи чаще всего дается ответ 5, то он более правильный – в качестве учителя здесь выступают те, кто дает ответ.
9 июл 14, 14:47    [16281367]     Ответить | Цитировать Сообщить модератору
 Re: Обучение нейронной сети  [new]
mad_nazgul
Member

Откуда:
Сообщений: 4213
Guest_neural_net
mad_nazgul,
По идее, даже я не должен знать, что 3+2=5, т.к. это не очевидно (может зависеть от системы счисления).
На примере капчи, можно просто задать, что если a=3 и b=2, то результат всегда 5. А система должна учиться, и основываться на ответах, которые даются при проверке капчи. Т.е. если при проверки капчи чаще всего дается ответ 5, то он более правильный – в качестве учителя здесь выступают те, кто дает ответ.


Во время обучения подсовывая системе капчи вы ("учитель") должны знать что 3+2=5.
Это уже после обучения, система должна понимать образ это "3+2" или что-то другое.

Кроме того. Система может и не знать, что а=3 и b=2. Она "знает", что на образ "3+2" нужно дать ответ 5.
Для того, чтобы система могла понимать, что а=3, а b=5, и операция "+". Система должны уметь "вычленять" образы.
Т.е. нужно ее "обучить", что образ "3" это 3, образ "2" это 2, а образ "+" это операция "+".
Кроме того, ее нужно "обучить", что с этими образами нужно проделать определенные манипуляции, чтобы получить 5 если эти образы расположены в определенном порядке.
Данная задача в общем случае еще не решена (точнее совсем не решена).
Т.е. научить, что "3+2" это 5 еще можно, то что для определенных образов существует образ, который позволяет ими манипулировать - нет.

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

Представьте, что вы дрессируете таракана, который при показе картинки "3+2" должен подбежать к картинке с "5".
Где-то так. :-)
9 июл 14, 15:14    [16281594]     Ответить | Цитировать Сообщить модератору
 Re: Обучение нейронной сети  [new]
Guest_neural_net
Guest
mad_nazgul
Guest_neural_net
mad_nazgul,
По идее, даже я не должен знать, что 3+2=5, т.к. это не очевидно (может зависеть от системы счисления).
На примере капчи, можно просто задать, что если a=3 и b=2, то результат всегда 5. А система должна учиться, и основываться на ответах, которые даются при проверке капчи. Т.е. если при проверки капчи чаще всего дается ответ 5, то он более правильный – в качестве учителя здесь выступают те, кто дает ответ.


Во время обучения подсовывая системе капчи вы ("учитель") должны знать что 3+2=5.
Это уже после обучения, система должна понимать образ это "3+2" или что-то другое.

Кроме того. Система может и не знать, что а=3 и b=2. Она "знает", что на образ "3+2" нужно дать ответ 5.
Для того, чтобы система могла понимать, что а=3, а b=5, и операция "+". Система должны уметь "вычленять" образы.
Т.е. нужно ее "обучить", что образ "3" это 3, образ "2" это 2, а образ "+" это операция "+".
Кроме того, ее нужно "обучить", что с этими образами нужно проделать определенные манипуляции, чтобы получить 5 если эти образы расположены в определенном порядке.
Данная задача в общем случае еще не решена (точнее совсем не решена).
Т.е. научить, что "3+2" это 5 еще можно, то что для определенных образов существует образ, который позволяет ими манипулировать - нет.

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

Представьте, что вы дрессируете таракана, который при показе картинки "3+2" должен подбежать к картинке с "5".
Где-то так. :-)


Это я все понимаю.
Я просто веду к тому, что результат 5 не очевидный. Обучающая система исходя из «своего видения мира» и основываясь на «общественном мнении» пользователей, получаемом при проверке капчи, в какой-то момент времени может считать, что 3+2=6. Возможно, это неправильно, но на основе имеющихся входных данных, в какой-то момент времени это может являться правдой.
Самый просто пример из мира людей – Земля вертится вокруг Солнца или Солнце вокруг Земли? Раньше все считали, что Солнце вокруг земли и это было «правильно». Любого, кто мыслил иначе, просто сжигали. Получается, на то время, в общем сознании людей, правильный ответ был бы «Солнце вокруг Земли». Сейчас мы по «новым» имеющимся данным считаем, что «Солнце вокруг Земли».
Т.е. я один не могу выступать в качестве учителя, потому что, если бы я плохо учился, я мог бы думать, что 3+2=10. С моей точки зрения это было бы истиной, но на самом деле народ считает, что правильный ответ 5, и с этим не поспоришь :)
Результат «5» в действительности не известен никому, он находится путем коллективного «опроса», как при маркетинговом исследовании.
9 июл 14, 15:44    [16281850]     Ответить | Цитировать Сообщить модератору
 Re: Обучение нейронной сети  [new]
mad_nazgul
Member

Откуда:
Сообщений: 4213
Guest_neural_net
Это я все понимаю.
Я просто веду к тому, что результат 5 не очевидный.


Я бы сказал вероятностный.
Местами даже квантовый ;-)


Guest_neural_net
Обучающая система исходя из «своего видения мира» и основываясь на «общественном мнении» пользователей, получаемом при проверке капчи, в какой-то момент времени может считать, что 3+2=6. Возможно, это неправильно, но на основе имеющихся входных данных, в какой-то момент времени это может являться правдой.


Еще раз. Если система обучена что образ "3+2" это образ "6".
Значит так она обучена.
Повторю. На данный момент времени нейронные сети не могут манипулировать абстрактными понятиями.
Она не понимает что "3+2" - это математическое выражение.
Для нее это образ. Точно так же как, например, для таракана.

Guest_neural_net
Самый просто пример из мира людей – Земля вертится вокруг Солнца или Солнце вокруг Земли? Раньше все считали, что Солнце вокруг земли и это было «правильно». Любого, кто мыслил иначе, просто сжигали. Получается, на то время, в общем сознании людей, правильный ответ был бы «Солнце вокруг Земли». Сейчас мы по «новым» имеющимся данным считаем, что «Солнце вокруг Земли».


Современные системы еще могут опознать "солнце", "землю".
Но они принципиально не могут знать что вокруг чего и как крутиться.
Они даже "крутиться" не понимают.

Guest_neural_net
Т.е. я один не могу выступать в качестве учителя, потому что, если бы я плохо учился, я мог бы думать, что 3+2=10. С моей точки зрения это было бы истиной, но на самом деле народ считает, что правильный ответ 5, и с этим не поспоришь :)
Результат «5» в действительности не известен никому, он находится путем коллективного «опроса», как при маркетинговом исследовании.


Эти вопросы для современных нейронных сетей рано задавать.
Они еще не научились мышлению. Даже на уровне таракана.
В лучшем случае с горем пополам это опознать одинаковые образы и все.
9 июл 14, 17:23    [16282655]     Ответить | Цитировать Сообщить модератору
 Re: Обучение нейронной сети  [new]
Guest_neural_net
Guest
mad_nazgul, спасибо за ответы, теперь появилось больше понимания о нейронных сетях и методах их обучения. А может есть какие-нибудь книги или ссылки, в которых наглядно объясняются нейронные сети, без заумных формул?
11 июл 14, 14:59    [16292360]     Ответить | Цитировать Сообщить модератору
 Re: Обучение нейронной сети  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 29717
mad_nazgul
Эти вопросы для современных нейронных сетей рано задавать.
Они еще не научились мышлению. Даже на уровне таракана.
В лучшем случае с горем пополам это опознать одинаковые образы и все.

+1
У них нет ассоциативного мышления.
Человек-ребёнок буквально с утробы матери осознаёт образ Матери визуально из тысячи таких же мама.bmp )))
11 июл 14, 15:23    [16292576]     Ответить | Цитировать Сообщить модератору
 Re: Обучение нейронной сети  [new]
mad_nazgul
Member

Откуда:
Сообщений: 4213
Guest_neural_net
mad_nazgul, спасибо за ответы, теперь появилось больше понимания о нейронных сетях и методах их обучения. А может есть какие-нибудь книги или ссылки, в которых наглядно объясняются нейронные сети, без заумных формул?


Таких не знаю.

Вообще то, все эти заумные формулы нужны как раз для создания нейронной сети.
Т.к. архитектура "фоннеймана" не подходит для создания нейронных сетей, соответственно для моделирования нейронов приходиться "извращаться".

Мои знания конечно устарели на лет 15-17.
Но пока я ничего не слышал о прорывах в данной области.

Сейчас модно - квантовые компьютеры. :-)

P.S. Можно погуглить еще "персептрон", но там все равно куча формул. ;-)
11 июл 14, 15:29    [16292633]     Ответить | Цитировать Сообщить модератору
 Re: Обучение нейронной сети  [new]
DASTAD
Member

Откуда:
Сообщений: 41
если еще актуально набросаю свои 5 копеек

Ваш пример 3+2 равно 5 не совсем корректен, при таком подходе мы учим нейросеть операции сложения для двух чисел.
Например мы умеем складывать числа до 100, а хотим уметь считать дальше. Делаем гипотезу, что если научим сеть считать до 100 до она дальше будет уже уметь сама. Начинаем ее учить
Тупо прогоняем ей таблицу с паттернами Входная информация 2 2 выход 4; вход 3 2 выход 5;.... вход 50 50 выход 100
И смотрим получается у нее забомнить или нет. Допустим получается, тогда делаем проверочку подаем 100 и 200 и получаем выход 300. Вуаля все работает мы получили инструмент, который умеет складывать числа больше 100.

Примерно так
Разбираться действительно лучше начать с персептрона, вроде он самый простой для понимания нейросетей
Также лучше сразу для понимания разобратся с "методом наименьших квадратов", "качество" обучения проверяется им.
31 окт 14, 08:21    [16780640]     Ответить | Цитировать Сообщить модератору
 Re: Обучение нейронной сети  [new]
mad_nazgul
Member

Откуда:
Сообщений: 4213
DASTAD
если еще актуально набросаю свои 5 копеек

Ваш пример 3+2 равно 5 не совсем корректен, при таком подходе мы учим нейросеть операции сложения для двух чисел.
Например мы умеем складывать числа до 100, а хотим уметь считать дальше. Делаем гипотезу, что если научим сеть считать до 100 до она дальше будет уже уметь сама. Начинаем ее учить
Тупо прогоняем ей таблицу с паттернами Входная информация 2 2 выход 4; вход 3 2 выход 5;.... вход 50 50 выход 100
И смотрим получается у нее забомнить или нет. Допустим получается, тогда делаем проверочку подаем 100 и 200 и получаем выход 300. Вуаля все работает мы получили инструмент, который умеет складывать числа больше 100.


Как раз этого и не происходит.
Т.к.
1) Система не знает что такое "число" (абстрактное понятие)
2) Система не знает что такое "математическая операция" (абстрактное понятие)
Т.е. подав 100 и 200 скорее всего ничего не получим, ну или получим какую-нибудь фигню.
31 окт 14, 10:37    [16781311]     Ответить | Цитировать Сообщить модератору
 Re: Обучение нейронной сети  [new]
DASTAD
Member

Откуда:
Сообщений: 41
в случае со сложением будет - Вах, мамой клянусь! (сам писал персептрон и обучал его :) ) Другое дело с буквами, если мы учим его распознавать 10 букв, то остальные 23 он не распознает, так как никогда не видел их и закономерности, как у сложения, тут нет.
Конкретный персептрон да и другие сети (с которыми сталкивался) они работают с числами 0..1 или от -1..1, зависит от базовой функции нейрона. Другое дело когда мы хотим от сети чтото иное, а не математических операций: и приходится кодировать нечисловую информацию числами. Скажем понятия "холодно", "тепло", "горячо".
31 окт 14, 11:10    [16781655]     Ответить | Цитировать Сообщить модератору
 Re: Обучение нейронной сети  [new]
mad_nazgul
Member

Откуда:
Сообщений: 4213
DASTAD
в случае со сложением будет - Вах, мамой клянусь! (сам писал персептрон и обучал его :) ) Другое дело с буквами, если мы учим его распознавать 10 букв, то остальные 23 он не распознает, так как никогда не видел их и закономерности, как у сложения, тут нет.
Конкретный персептрон да и другие сети (с которыми сталкивался) они работают с числами 0..1 или от -1..1, зависит от базовой функции нейрона. Другое дело когда мы хотим от сети чтото иное, а не математических операций: и приходится кодировать нечисловую информацию числами. Скажем понятия "холодно", "тепло", "горячо".


Ну думаю "холодно", "тепло", "горячо" обучить еще можно, т.к. это можно "преобразовать в цифру", но с "абстракциями" пока проблема.
31 окт 14, 11:35    [16781945]     Ответить | Цитировать Сообщить модератору
 Re: Обучение нейронной сети  [new]
Cpt. Gray
Member

Откуда:
Сообщений: 133
Одна из самых простых "с обучением" - нейронная сеть Хопфилда, здесь очень просто объясняется принцип её работы:
2 дек 14, 17:17    [16939073]     Ответить | Цитировать Сообщить модератору
 Re: Обучение нейронной сети  [new]
NikolayV81
Member

Откуда: Москва
Сообщений: 1098
Petro123
mad_nazgul
Эти вопросы для современных нейронных сетей рано задавать.
Они еще не научились мышлению. Даже на уровне таракана.
В лучшем случае с горем пополам это опознать одинаковые образы и все.

+1
У них нет ассоциативного мышления.
Человек-ребёнок буквально с утробы матери осознаёт образ Матери визуально из тысячи таких же мама.bmp )))


Не узнаёт, проверьте если есть на ком, именно по картинке :) Просто помимо картинки есть ещё куча факторов.
8 янв 15, 20:36    [17095148]     Ответить | Цитировать Сообщить модератору
 Re: Обучение нейронной сети  [new]
NikolayV81
Member

Откуда: Москва
Сообщений: 1098
Cpt. Gray
Одна из самых простых "с обучением" - нейронная сеть Хопфилда, здесь очень просто объясняется принцип её работы:


Какое знакомое лицо однако, всего-то 9 лет прошло...

Автору топика, не пытайтейсь отождествлять живые нейроны с их приближённой моделью в виде компьютерных алгоритмов, дело в том, что в алгоритмы не может быть заложена сравнимая по величине ошибка ( аппаратные генераторы случайных чисел основанные на "природных явлениях" делать конечно научились, но системы построенные с их использованием на данный момент не появились ), ключевым в "самообучаемых" системах является право на непредсказуемость поведения, у более менее сложных компьютерных систем на данный момент таких возможностей нет и не предвидится. Та же обучаемость watson-а она немного искуственная, просто в какой-то момент люди пришли к выводу что дешевле заставить простой алгоритм принимать нужные решения на основании накопленных данных, нежели описать поведение системы в виде алгоритма, покрывающего весь возможный набор данных, это как получения функции по известному набору пар ( параметр, значение ), чем больше мы накопим данных тем лучше будет результат, но при этом выбирать способ восстановления всё равно нужно на этапе проектирования.
8 янв 15, 20:48    [17095169]     Ответить | Цитировать Сообщить модератору
 Re: Обучение нейронной сети  [new]
anryal
Member

Откуда:
Сообщений: 145
Хороший курс по машинному обучению, начать можно с него
https://class.coursera.org/ml-008
5 фев 15, 13:25    [17222263]     Ответить | Цитировать Сообщить модератору
 Re: Обучение нейронной сети  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 33434
mad_nazgul
Guest_neural_net
Помогите разобраться с нейронными сетями. Нашел в интернете много статей, но во всех них используются «сухие» понятия и сложные формулы, а конкретных для понимания примеров очень мало.
Хотелось бы, чтобы нейронная сеть понимала, что 3+2=5. Для этого нужно обучить ее. И вот тут возникают вопросы, как происходит процесс обучения. Может кто-нибудь объяснить это на данном примере. Заранее спасибо.


Тут как и с обычными живыми существами.
Долго показываешь, что 3+2=5, пока система не запоминает, что 3+2=5.
Т.е. дожна быть обратная связь.
На вход подается 3+5, на выходе идет всякая фигня.
Если равно 5, то система "поощряется" в остальных случаях нет.
Все <:o)


Это -- обучение "с учитилем" (superwised learing).
А есть ещё обучение "без учителя" (unsuperwised).

Там система выдаст разные результаты сложения 3+2 и её же оценку верности результата (например) , а ты должен уже сам выбрать нужный.
10 фев 15, 08:59    [17242194]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Обучение нейронной сети  [new]
я
Guest
https://habrahabr.ru/post/312450/
https://habrahabr.ru/post/313216/
-- 2 части одной статьи которая очень внятно разбирает нейронные сети
24 май 17, 17:13    [20508815]     Ответить | Цитировать Сообщить модератору
Все форумы / Разработка информационных систем Ответить