Немало слов уже было сказано по поводу нейронных сетей.
Нейронные сети, какой модный сегодня термин. И модный в первую очередь потому, что мало кто понимает, как оно работает, но оно работает! По крайне мере иногда срабатывает. Как пенталгин — когда ничто не помогает.
Как говорится: Theory is when you knows everything but nothing work. Practice is when everything works but nobody knows why. Here we combine theory and practice nothing works and no one knows why.
Но читая топики по НС, создается впечатление, что мало кто продвинулся дальше студенческого II-III курса института. Все так и норовят поведать всему миру о загадочном механизме обучения BackProp и как все будет круто. И действительно все круто… особенно на тестовых примерах и небольших задачках, но когда дело доходит до реальных задач, все совсем по-другому — ошибка сходится медленно или вообще не сходится или сеть вообще не работает… то ли лыжи не едут, то ли… И здесь на помощь приходят более сложные методы обучения, в которые зарываешься с головой и начинаешь копаться в математике. А математики тоже вовсе не дураки, зашифровали сказку о колобке англиской новеллой, без рюмки не разберешься! Но когда разберешься — вот оно счастье!!! И ты понимаешь, что зачем было изобретать велосипед (хоть приятно — но без смысла), если многое уже до тебя изобретено.
И я через это прошел. Тем более, что хорошей литературы по НС в сети мало, лучшее — это наверно Хайкин, и то, там больше слов, чем какой то реализации. Но в буржунете ребята не дремлют и все таки удалось нарыть несколько комьюнити, занимающихся данным вопросом. И немало научных работ можно почитать в открытом доступе… Опять же для чего? Для того, чтобы понять, как делать велосипед!
Дабы не повторять моих и не только ошибок, советую использовать готовые библиотеки, коих в сети при желании можно найти немеренно. Я пользую для своих нужд neuralnet-0.5.1, 2005 (кажется) года выпуска.
Эта C библиотека позволяет без особых трудностей и знаний математики и даже нейронных сетей создавать, обучать и затем использовать НС в решении задач. Кроме того, в ней реализованы такие сильные алгоритмы обучения, как Левенберга-Марквардта и BFGS метод, что в свою очередь являются квазиньютоновскими. Эти итерационные методы обучения хорошо зарекомендовали себя в нейросетевом обучении.
Но кроме подстройки весов, можно изменять различные параметры сети для ее обучения. Эту идею развивает иностранное сообщество NEAT(имеет различные вариации, например HyperNEAT). Методом генетических алгоритмов эволюционируют не только веса сети, но и ее структура. Также исходные коды и демо программы можно найти на страницах сообщества.
Я же сейчас экспериментирую с комбинированным обучением, а именно используя генетические алгоритмы и BFGS, Левенберга-Марквардта на различных эпохах эволюции.
Результаты по возможности буду отписывать в топиках.
Кроме того, изучаю возможности анализа текста с использованием НС. Пока остановился на представлении в виде TF-IDF. Конечной точкой данного изучения будет создание генератора уникального контента, по характеристикам который, я надеюсь, будет превосходить генераторы, основанные на Марковских цепях. Также буду держать в курсе.
Ну что ж. На этом все.
Начинал писать — думал напишу… а получилось — вода. Сорри за воду. В следующий раз больше кода.
P.S. Да, код будет на Си++, с использованием neuralnet, а также некоторых надписок.
Нейронные сети, какой модный сегодня термин. И модный в первую очередь потому, что мало кто понимает, как оно работает, но оно работает! По крайне мере иногда срабатывает. Как пенталгин — когда ничто не помогает.
Как говорится: Theory is when you knows everything but nothing work. Practice is when everything works but nobody knows why. Here we combine theory and practice nothing works and no one knows why.
Но читая топики по НС, создается впечатление, что мало кто продвинулся дальше студенческого II-III курса института. Все так и норовят поведать всему миру о загадочном механизме обучения BackProp и как все будет круто. И действительно все круто… особенно на тестовых примерах и небольших задачках, но когда дело доходит до реальных задач, все совсем по-другому — ошибка сходится медленно или вообще не сходится или сеть вообще не работает… то ли лыжи не едут, то ли… И здесь на помощь приходят более сложные методы обучения, в которые зарываешься с головой и начинаешь копаться в математике. А математики тоже вовсе не дураки, зашифровали сказку о колобке англиской новеллой, без рюмки не разберешься! Но когда разберешься — вот оно счастье!!! И ты понимаешь, что зачем было изобретать велосипед (хоть приятно — но без смысла), если многое уже до тебя изобретено.
И я через это прошел. Тем более, что хорошей литературы по НС в сети мало, лучшее — это наверно Хайкин, и то, там больше слов, чем какой то реализации. Но в буржунете ребята не дремлют и все таки удалось нарыть несколько комьюнити, занимающихся данным вопросом. И немало научных работ можно почитать в открытом доступе… Опять же для чего? Для того, чтобы понять, как делать велосипед!
Дабы не повторять моих и не только ошибок, советую использовать готовые библиотеки, коих в сети при желании можно найти немеренно. Я пользую для своих нужд neuralnet-0.5.1, 2005 (кажется) года выпуска.
Эта C библиотека позволяет без особых трудностей и знаний математики и даже нейронных сетей создавать, обучать и затем использовать НС в решении задач. Кроме того, в ней реализованы такие сильные алгоритмы обучения, как Левенберга-Марквардта и BFGS метод, что в свою очередь являются квазиньютоновскими. Эти итерационные методы обучения хорошо зарекомендовали себя в нейросетевом обучении.
Но кроме подстройки весов, можно изменять различные параметры сети для ее обучения. Эту идею развивает иностранное сообщество NEAT(имеет различные вариации, например HyperNEAT). Методом генетических алгоритмов эволюционируют не только веса сети, но и ее структура. Также исходные коды и демо программы можно найти на страницах сообщества.
Я же сейчас экспериментирую с комбинированным обучением, а именно используя генетические алгоритмы и BFGS, Левенберга-Марквардта на различных эпохах эволюции.
Результаты по возможности буду отписывать в топиках.
Кроме того, изучаю возможности анализа текста с использованием НС. Пока остановился на представлении в виде TF-IDF. Конечной точкой данного изучения будет создание генератора уникального контента, по характеристикам который, я надеюсь, будет превосходить генераторы, основанные на Марковских цепях. Также буду держать в курсе.
Ну что ж. На этом все.
Начинал писать — думал напишу… а получилось — вода. Сорри за воду. В следующий раз больше кода.
P.S. Да, код будет на Си++, с использованием neuralnet, а также некоторых надписок.