Илья Пономарев
август 2016.
10232

Как создать свою собственную нейросеть?

Ответить
Ответить
Комментировать
0
Подписаться
6
3 ответа
Поделиться

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

И тут возникает собственно самое важное, что вам для этого потребуется: ДАННЫЕ. Много примеров задач, которые будут подаваться на вход нейросети, и правильные ответы на эти задачи. Нейросеть будет на этом учиться самостоятельно давать эти правильные ответы.

И вот тут возникает куча деталей и нюансов, которые нужно знать и понимать, чтобы это все имело шанс дать приемлемый результат. Осветить их все здесь нереально, поэтому просто перечислю некоторые пункты. Во-первых, объем данных. Это очень важный момент. Крупные компании, деятельность которых связана с машинным обучением, обычно содержат специальные отделы и штат сотрудников, занимающихся только сбором и обработкой данных для обучения нейросетей. Нередко данные приходится покупать, и вся эта деятельность выливается в заметную статью расходов. Во-вторых, представление данных. Если каждый объект в вашей задаче представлен относительно небольшим числом числовых параметров, то есть шанс, что их можно прямо в таком сыром виде дать нейросети, и получить приемлемый результат на выходе. Но если объекты сложные (картинки, звук, объекты переменной размерности), то скорее всего придется потратить время и силы на выделение из них содержательных для решаемой задачи признаков. Одно только это может занять очень много времени и иметь гораздо более влияние на итоговый результат, чем даже вид и архитектура выбранной для использования нейросети.

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

Данные должны быть собраны тоже не абы как, а грамотно и продуманно. Иначе обученная сеть может вести себя странно и даже решать совсем не ту задачу, которую предполагал автор.

Также нужно представлять себе, как грамотно организовать процесс обучения, чтобы сеть не оказалась переученной. Сложность сети нужно выбирать исходя из размерности данных и их количества. Часть данных нужно отложить для теста и при обучении не использовать, чтобы оценить реальное качество работы. Иногда различным объектам из обучающего множества нужно приписать различный вес.  Иногда эти веса полезно варьировать в процессе обучения. Иногда полезно начинать обучение на части данных, а по мере обучения добавлять оставшиеся данные. В общем, это можно сравнить с кулинарией: у каждой хозяйки свои приемы готовки даже одинаковых блюд.

5

Нде взять уже готовые? 

0
Ответить

Где*

0
Ответить
Прокомментировать
АВТОР ВОПРОСА ОДОБРИЛ ЭТОТ ОТВЕТ

http://robocraft.ru/blog/algorithm/558.html  - очень толковое объяснение принципа работы (на русском)

В  MATLAB есть модули для работы с нейросетями. Для разных языков программирования есть свои библиотеки для работы с ними.

Самые популярные: 

Java - Deeplearning4j, Spark ML;  Lua - Torch;  Python - TensorFlow, Scikit-learn

5
Прокомментировать

Мысль, что достаточно скачать готовую нейронную сеть и просто скормить ей данные, кажется не совсем правдивой, поскольку нейронка - это конкретная математическая модель, заточенная конкретно под какую-то задачу, под данные, с которыми мы хотим работать. Другое дело в том, что нынче этот процесс очень упрощён, поскольку вам не нужно самим высчитывать все производные и писать градиентный спуск - куча готовых фреймворков (Sklearn, TensorFlow, Keras) делают всю сложную работу за вас, а вам нужно лишь в пару строчек задать архитектуру - а для этого хватит и месячных курсов на каком-нибудь сайте (Udacity и Coursera эти ваши). Конечно, чтобы делать что-то серьёзное, нужно зубрить матанализ и линейную алгебру, так как без них не будет и понимания, что конкретно вы делаете, что сильно ограничивает ваши возможности, но просто ознакомиться и поиграться сейчас очень и очень просто.

0
Прокомментировать
Ответить