Комментарии 29
Формулы и код — это все интересно, но скриншот программы с графическим представлением того, что получилось, была бы более уместна в результате.
вычисляет величину корректировки байеса

изменяет веса своих связей с байесом

image
не нужно его корректировать и изменять его связи -)
Вы правы, каюсь., заменил на «смещение». Незнакомый термин в спешке перевел неправильно и получилось очень некрасиво :(
Честно, если бы не знал о чем вы пишите не фига не понял бы. Для знакомства с нейронными сетями советую программку NeuralWorks, вроде есть демо версии бесплатные, у нас на лабах по данном предмету была, с ней достаточно всё наглядно можно поглядеть, что да как происходит при обучении различных видов сетей, не только обратного распространения.
Сдается мне, что каждый, кто знакомится нейросетями, считает своим долгом написать об этом на Хабре. И только у по настоящему твердых духом получается избежать этого искуса.
Так это же студенческая программа, примерно 4-5 курс и некоторые пишут по ней диплом, поэтому отличный повод написать статью на хабре для инвайта. Только вот штука в том, что в основном это перепечатки книг и ничего нового или даже своего — авторы не вносят. Они не рассуждают, не проверяют, не тестируют, не э-к-с-п-е-р-и-м-е-н-т-и-р-у-ю-т. Вот и получается безвкусица, а не стоящая статья.
Ну слушал я одну докторскую про умножение на нейронной сети, нейронная сеть сделана на ПЛИС, в активационной функции есть умножение. Спрашивается как это будет работать быстрее. Надеюсь вы не таких статей ждете? У меня когда мы изучали нейронные сети была идея попробовать с помощью нее предсказывать генератор псевдослучайных чисел, но не удалось, а так кроме распознавания нейронные сети пока ни для чего особо не подходят пока не будет хороших аппаратных решений.
Никто тут как бы и не заставляет студента писать статью сравнимую с докторской. Речь-то о другом.
Вы меня не правильно поняли. Это был один из разделов доктороской, сама докторская о другом. Я говорил о механизме применения: «Умножать с помощью нейронной сети, построенной на ПЛИС, с активационной функцией, включающей умножение». На современном этапе развития это бред. Реально сейчас можно говорить только о старом, о новом можно будет говорить с созданием Нейрочипов.
Никто и не требует писать о новом в настолько кардинальном смысле.
Но на моей памяти это не менее чем третья статья об обратном распространении ошибки. И не менее чем пятая про основы нейросетей. Нужно иметь долю храбрости (хабрости?) чтобы считать, что свое объяснение того же самого затмит предыдущие повествования в понятности и наглядности. А тут даже кода метода нет — только интерфейсы.
Вместо этого лучше писать про какую-то конкретную реализацию метода для какой-то конкретной интересной задачи. Или какой-нибудь эвристический способ улучшить результаты работы.
приму участие, пожалуй, в дискуссии.
1. Что касается студентческой программы 4-5 курсов, освещающей нейронные сети. Закончил мехмат, специальность компьютерная безопасность. Курса нейронных сетей не было и в помине. Если у Вас он был, я искренне за Вас рад — я же, видимо, компенсирую пробелы в своем образовании самостоятельно.
2. Всем высказавшимся ранее насчет новизны статьи — товарищи, давайте не будем путать новизну информации на сайте с научной новизной. как человек, неоднакратно слышавший различные точки зрения по поводу того, что происходит сейчас в сфере науки, от лиц, непосредственно варящихся в котле этой самой научной кухни, могу сказать, что вся научная новизна современных работ сводится к допиливанию и вылизыванию существующих идей и алгоритмов, и лишь единицы, действительно, приносят что-то новое в научный мир. Прошу прощения, а сколько докторов у нас в стране?
3. Весь код присутствует на гитхабе, потрудитесь дочитать до конца, пожалуйста, прежде чем выносить вердикт. И не только код, относящийся к реализации алгоритма, но и пример его использования. стоит только cmake запустить разок. Это и есть реализация существующего алгоритма.
С этим утверждением сложно поспорить. Конкретная реализация имеет своей целью закрепление знаний, полученных в ходе ознакомления с информацией, представленной в книге, ссылку на которую я привел. Кроме того, теория, не перегруженная сложными формулами структурирована таким образом, что человек, которого интересует прежде всего алгоритмическая сторона вопроса, найдет ее полезной.
Извольте.
1. На Хабре в правом верхнем углу есть строка для поиска по Хабру (сам пользовался). Вбейте в нее «нейронные сети» и наслаждайтесь — тонны статей как о начальных сведениях про нейросети, так и о более сложных примерах, концепциях. Данная же статья, не будем лукавить, не отличается ни качеством изложения, ни методической стороной, ни новизной информации.
2. Не думаю, что кто-то в комментариях в самом деле ожидал на Хабре новизны научной, так как действительно новые вещи пишутся сначала в научных статьях, а потом уже перекочевывают сюда. Но новизна в широком смысле, вполне приемлемая для Хабра — это новизна применения существующих вещей. Не просто «ой, смотри, ребя, я тут книжку по нейросетям прочитал, сейчас перескажу», а «я тут книжку прочитал и вот такую штуку закодил, которая вот такие вещи делает». В обратном случае можно начинать писать статьи по каждой лекции университетской.
3. Автор в дополнение к теоретической части вынес в статью фрагменты кода. Чего он хотел этим добиться? Чтобы мы посмотрели на интерфейсы и прониклись его мастерством применения паттернов ООП? Статья ведь про метод обратного распространения ошибки — думаю, рационально было бы именно его выставлять в виде кода. А если весь код на гитхабе, то зачем декларативные куски выставлять?
Ваши первое и второе высказывания — вещь сугубо субъективная. Еще раз повторюсь, чистота и прозрачность алгоритма была для меня приоритетным фактором выбора данного источника информации. Я не ставил своей целью демонстрацию каких либо навыков этой статьей, но если эти навыки будут прокомментированы профессионалами ( особенно навыки программирования, в чем я тоже делаю только еще первые шаги ( в профессиональном плане)), то я буду только рад, о чем я и заявил в начале статьи. А теперь к интерфейсам. Открывая чужой код, смотрю первым делом на интерфейсы, так как, по-моему мнению, это именно то, что дает понять, как пользоваться кодом, конкретным объектом и прочее.
Несомненно субъективная, я и не спорю. Так как статья не ставит целью донести до народа что-то новое, я оценивал ее с точки зрения педагогической — как хорошо она излагает известное. И моя основная претензия вовсе не к качеству и содержанию, не к коду и так далее. А к тому, что до вас об этом алгоритме уже писали. И что более важно — писали на Хабре. Так зачем повторять то, что уже много раз было сказано? Надежда, что в этой статье то же самое сказано как-то по другому, не оправдалась.
Ну и вы ведь рассказываете об алгоритме, а не свои разработки продаете (раздаете даром). Поэтому логично было бы предъявлять в первую очередь код существенной части алгоритма, а не интерфейс и ссылку на продолжение.
Ваше позиция мне ясна, все вышесказанное Вами я приму к сведению. Дальнейшее продолжение этой ветки дискусси, по-моему мнению, не приведет ни к чему конструктивному, так как говорим мы, как мне кажется, немного о разных вещах.
>«Умножать с помощью нейронной сети, построенной на ПЛИС, с активационной функцией, включающей умножение»

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

Именно поэтому я свой вопрос и задал. Существуют «более другие» методы, тот же SVM, например, на некоторых задачах показывает себя лучше нейронных сетей, которые выбирают только потому, что от них веет утонченностью и искусственным интеллектом, а SVN — всего лишь линейный классификатор.
SVN замечательная штука, особенно мне импонирует математическая постановка задачи, из которой SVM ногами произрастает. Я даже знаю пример, где, по моему опыту, SVM рвал, другие алгоритмы на британский флаг. А именно сравнение поискового запроса и поисковой выдачи. Но есть у нелинейного SVM одна проблема… сложность тренировки от числа объектов O(n^3) — и, сразу, для более-менее внятных задач SVM становится неприменим… И на первое место выходят всякого рода леса и нейронные сети.
Вы статистику противопоставляете нейронным сетям? Или я что-то не так понял?
На курсере Andrew Ng ведет классный курс по машинному обучению, там рассматриваются в том числе и нейронные сети www.coursera.org/course/ml
Новая сессия началась неделю назад, еще можно догнать)
Для знакомства с областью лучше не придумаешь, точно не пожалеете.
Его курс замечателен, но уж больно оторван от реальности. Там толком не поднимаются проблемы точности и масштабируемости. Я прекрасно помню чувство, когда я, просмотрев его лекции, будучу магистром физики, с несколькоми публикациями в мировых научнх журанлах, с зашкаливающим ЧСВ попробовал применить свои занния на практике, И тут же получил по эмоциональный щелбан по носу, а для того, кто от груди жмёт лёжа 100 кг, это достаточно необычное чувство. Это я к тому, что теория — теорией (Теория это очень важно, а практика практикой. ) Мой эмоциональный щелбан состоял в том, что моя первая попытка предсказания на Титанике… дала мне нижние 5%. То есть, показала мне, что я не «без пяти минут кандитдат наук», а так, «лошара» с завышенным самомнением. После этого «линия партии изменилась», я стал участвовать в каждом соревновании на kaggle.com. Причём если я не попадаю в топ 10% — что-то я упустил. Если я не попадаю в топ 25% — это значит, что я вообще потерялся в этой задаче. Сейас я 233 из 352971, но это, во-многом, благодаря тому, что ты не просто блеешь над проблемой, как многие и в нашей, и в заграничной науке, а что работа над задачами, которые предосталвяет kaggle.com в режиме, когда проотив тебя и те, кто работают в real Data Science, и аспиранты Stanford, и аспиранты МГУ(Есть один серьёзный профессор в МГУ — Алекксандр Дьяконов + его студенты), и девятилетние азиаты(что, бы ты не делал, какой бы ты навык не тренировал, всегда найдётся девятилетний азиат, который делает это лучше(как минимум на youtue.com)), это вопрос, который надо ответить. Как — это твои проблемыы. Какие инструемнты использовать, опять же, зависит от твоего выбора. Все красивые слова и научные титулы — это в пользу бедных.

Твой результат превыше всего.

"
Классическая статья про многослойный персептрон прямого распространения. Делал такой на VBA just for fun. Безусловно, есть куча свободных библиотек с реализацией различных нейронных сетей и их алгоритмов обучения, но своя сеть это СВОЯ сеть. После написания своей реализации начинаешь понимать сети более тонко, что-ли. Автор молодец в любом случае, если сам писал…
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.