|
244 / 164 / 133
Регистрация: 30.09.2012
Сообщений: 690
|
|||||||||||||||||||||||||||||||||||||||||||||||||||
Нейронные сети: XOR. Ошибка в алгоритме обучения21.05.2017, 16:04. Показов 4055. Ответов 16
Метки нет (Все метки)
Здравствуйте!
Никак не могу понять, где я ошибся, при реализации простой нейронной сети. Сеть обучается через раз. Иногда дает абсолютно верные результаты, иногда нет. Такое ощущение, что где-то проваливается в локальный минимум и застревает там. Пытался устранить этот эффект импульсом, но результата не дало. Используемая функция активации: сигмоида Инициализация весов: случайная инициализация (lower: -1.0 upper: 1.0) Алгоритмически вроде бы все верно: 1. Прямой проход
2. Расчет ошибки и ее обратное распространение
3. обновление весов
Выход сети:
Спасибо! Добавлено через 59 секунд Задачи или, или-не, и, и-не как однослойная, так и многослойная нейронная сеть решает (в моей реализации)
0
|
|||||||||||||||||||||||||||||||||||||||||||||||||||
| 21.05.2017, 16:04 | |
|
Ответы с готовыми решениями:
16
Нейронные сети
Нейронные сети |
|
41 / 20 / 3
Регистрация: 12.10.2015
Сообщений: 126
|
|
| 22.05.2017, 20:57 | |
|
Никто Вам ничего не посоветует без кода Вашей НС, XOR при классической реализации не всегда будет обучаться на простых архитектурах(2,1) на посложнее(2,10,1...) вероятность не сходимости гораздо меньше
зы ну и сигмоида это не идеал, лучше гипертангенс
1
|
|
|
244 / 164 / 133
Регистрация: 30.09.2012
Сообщений: 690
|
||
| 23.05.2017, 00:31 [ТС] | ||
|
Про недообучение\переобучение знаю, но так упорно везде писалось, что задача xor решается прямо-таки железно, что вначале и не сомневался в том, что так оно и есть ![]() Попробовал по вашему совету использовать гипертангенс и немного усложненную архитектуру сети и, действительно, алгоритм сходится в большинстве случаях. Хотя с сигмоидой и несколькими скрытыми слоями результат ненамного лучше, чем в изначальной конфигурации.
0
|
||
|
41 / 20 / 3
Регистрация: 12.10.2015
Сообщений: 126
|
||
| 25.05.2017, 02:39 | ||
|
1
|
||
|
244 / 164 / 133
Регистрация: 30.09.2012
Сообщений: 690
|
|
| 25.05.2017, 03:10 [ТС] | |
|
сахатый, Тоже предполагал, что в некоторых случаях начальная инициализация весов была успешнее, чем в других, и это сильно влияло на сходимость. Изменение количества слоев и скрытых нейронов в них при этом несильно помогало, в отличие от изменении функции активации. Как-то в большинстве источниках упускается, как мне показалось, значимость активационной функции.
Просто до этого думал, что на таких задачах не будет проблем с этим, однако, как оказалось, сильно ошибался ^_^ Такую же ситуацию наблюдаю и при использовании логистической регрессии на классическом наборе данных о листьях ириса. В некоторых случаях точность классификации достигала 97%, а в некоторых алгоритм вовсе не сходился (около 3-5%).
0
|
|
|
2619 / 1630 / 266
Регистрация: 19.02.2010
Сообщений: 4,325
|
||
| 26.05.2017, 21:24 | ||
|
Если и не говорят - то потому, что буквари пересказывать уже надоело. Особенно почти через 20 лет после выхода конкретно этого указанного букваря.
1
|
||
|
244 / 164 / 133
Регистрация: 30.09.2012
Сообщений: 690
|
|||
| 27.05.2017, 00:50 [ТС] | |||
0
|
|||
|
2619 / 1630 / 266
Регистрация: 19.02.2010
Сообщений: 4,325
|
||
| 27.05.2017, 19:19 | ||
|
Поэтому нужно уметь отделять компетентных от бредогенераторов Над последними можно только смеяться (как я посмеялся в http://neuropro.ru/memo340.shtml над типичными их представителями), серьёзно их писульки не рассматривая. Но меня, правда, и буржуинские учебники полностью не удовлетворяют (я про Хайкина это отдельно писал, из указанной методички ЛеКуна я тоже не использую очень многое из обведённых там в рамочку рецептов).
1
|
||
|
244 / 164 / 133
Регистрация: 30.09.2012
Сообщений: 690
|
||
| 27.05.2017, 20:25 [ТС] | ||
|
VTsaregorodtsev, Опять-таки, к сожалению, мой опыт пока не позволяет мне судить о компетентности авторов
![]() Ради интереса почитал http://neuropro.ru/memo322.shtml и возник вопрос, на который, возможно, вы уже отвечали: Как много времени заняло обучение сверточной нейронной сети на достаточно больших объемах данных? В статье вы писали о "минимальнейшем комфорте".
0
|
||
|
2619 / 1630 / 266
Регистрация: 19.02.2010
Сообщений: 4,325
|
|
| 28.05.2017, 21:58 | |
|
Дык, есть описание для размера базы, похожего на один из указанных Вами.
Для 60тыс картинок 28*28 (база MNIST) ориентиры времени есть в http://neuropro.ru/memo344.shtml Поделите тамошние времена на 3 (150 эпох - излишне много, за полсотни всё сходится. В Вашей задаче - думаю, тоже 50 эпох хватит). Далее - может, ещё на какой делитель (если вдруг Ваша нейросетка была размером меньше, чем указанная в хабровском обзоре, на который там дана ссылка). Это, правда, уже для "сейчас" ориентиры - а тогда, когда писался указанный Вами пост, прога помедленнее была примерно в полтора раза. И в указанном мной посте - свёрточная сетка "классическая" ЛеКуновская, со слоями сабсэмплинга. А в названном Вами - в варианте П.Симарда, без сабсэмплинга (он делается смещением положений полей свёрточных нейронов на шаг >1), но в 4 раза быстрее (при stride=2 ибо получается в 2 раза меньше свёрточных нейронов по вертикали и горизонтали, и 2*2=4). В общем, большие базы можно прикидочно проверять именно на таком варианте структуры - без сабсэмплинга (хотя тут экономия времени получается малой) и со stride=2 у свёрточных слоёв. Т.е. хоть тогда прога и помедленнее была - но большие базы всё-таки комфортно съедались из-за менее вычислительнозатратной структуры нейросетки.
0
|
|
|
244 / 164 / 133
Регистрация: 30.09.2012
Сообщений: 690
|
|
| 31.05.2017, 00:54 [ТС] | |
|
VTsaregorodtsev, Спасибо, интересная информация. Мне, правда, не совсем понятно, почему при использовании перспетрона у вас ушло ~17 минут, а при использовании сверточной сети - ~1 час и 17 минут. Не должно ли быть наоборот? Ведь, по сути, в сверточной нейронной сети количество проводимых вычислений меньше, чем у персептрона.
В моем случае использовалась видеокарта gtx 770 и время обучения заняло около 1,5 часа (Python 2.7\Keras версию не скажу уже\Theano 0.8.**). На более поздних версиях keras и theano время обучения несколько снизилось (как и обещали сами разработчики в пределах n%). На процессоре (i5 3570), как я уже упомянул, время было каким-то совсем заоблачным. Сложность нейронной сети при этом не сильно влияла на время, если не брать в расчет гиперпараметры, а только набор слоев.
0
|
|
|
2619 / 1630 / 266
Регистрация: 19.02.2010
Сообщений: 4,325
|
||
| 01.06.2017, 07:13 | ||
|
Хотя размер бинарного файла с записанной свёрточной сеткой при этом действительно может быть меньше, чем размер файла с персептроном.
0
|
||
|
244 / 164 / 133
Регистрация: 30.09.2012
Сообщений: 690
|
|
| 01.06.2017, 20:41 [ТС] | |
|
VTsaregorodtsev, Значит я неправильно оценивал количество и сложность вычислений в обоих случаях. Я думал, что при использовании сверточной нейронной сети не только количество нейронов меньше, что ведет к уменьшению затрат на хранение весов и иной информации, но и за счет этого количество проводимых операций существенно меньше. Или это утверждение верно в том случае, если в такой сети будут слои судбискретизации? Они же ведь как раз уменьшают размерность получившихся матриц после операции свертки.
0
|
|
|
2619 / 1630 / 266
Регистрация: 19.02.2010
Сообщений: 4,325
|
||
| 04.06.2017, 22:29 | ||
|
Но в каждой плоскости могут быть сотни и даже тысячи нейронов. Например, при картинке 30*30 и смещении рецептивных полей св.нейронов на единицу в плоскость влазит 26*26=676 нейронов. Просто у всех нейронов в некоторой плоскости - будет одинаковый=общий набор весов синапсов. И умножив эти сотни-тысячи нейронов в плоскости на число плоскостей в слое - получим уже о-го-го ![]() Далее, у каждого свёрточного нейрона может быть малое рецептивное поле. Например, 5*5. Но если свёрточный слой уже не первый - то в нём нейрон будет кушать сигналы со всех плоскостей (пофиг - свёрточных или порезанных в размере субдескретизацией) предыдущего слоя, т.е. иметь связь 5*5 () с каждой предыдущей плоскостью. Т.е. у нейрона при десятке плоскостей предыд.слоя будет 250синапсов независимо от того, как субдескретизация (если она была) порезала размер предыдущих плоскостей (размер-то она могла порезать, т.е. число нейронов в след.плоскости стало меньшим, но число синапсов-то для связи не уменьшилось). В общем, в свёрточной нейросетке нейронов много, синапсов у них тоже много. Хоть пулинг и уменьшает размерность "полян" сигналов - но после него обычно ставится большее число свёрточных плоскостей, дабы малое число выделенных пулингом признаков соединить в большее число более высокоуровневых признаков.
1
|
||
|
244 / 164 / 133
Регистрация: 30.09.2012
Сообщений: 690
|
|
| 05.06.2017, 03:29 [ТС] | |
|
VTsaregorodtsev, теперь стало понятнее, с чем связано такое различие во времени обучения, осталось только самому это сделать
![]() Спасибо за подробное объяснение, буду дальше разбираться теперь
0
|
|
|
defun
603 / 617 / 44
Регистрация: 30.04.2011
Сообщений: 702
|
|||||||||||||||||
| 12.07.2017, 00:57 | |||||||||||||||||
|
тест перед внедрением Adam, сеть прямого распространения, 2 слоя
Добавлено через 2 часа 27 минут
0
|
|||||||||||||||||
|
2619 / 1630 / 266
Регистрация: 19.02.2010
Сообщений: 4,325
|
|
| 12.07.2017, 21:27 | |
|
А от Адама вообще ничего не зависит.
Ну и, ИМХО, relu в персептроне - мастдай.
0
|
|
| 12.07.2017, 21:27 | |
|
Помогаю со студенческими работами здесь
17
Нейронные сети Сверточные нейронные сети Нейронные сети в трейдинге
Спектроскопия и нейронные сети Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
||||
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|