![image](https://habrastorage.org/getpro/geektimes/post_images/106/827/d06/106827d06244d471677eea728636e326.jpg)
Вместо предисловия
В недавнем прошлом судьба привела меня в область Нейронных Сетей (НС). Вопрос этот показался мне крайне интересным и, чего уж скрывать, не на шутку перспективным. Ах, какой простор открывается лишь при одной мысли что бы можно было сделать на основе НС, если бы только развить еще буквально чуть-чуть! И вот совсем недавно ко мне в голову забрела интересная (на мой взгляд, конечно) концепция. О да, я ни коем образом не претендую на истинность и правомерность своих суждений в вопросе НС, ибо, признаться честно, в этой области я дилетант (хочется верить, что только пока). Тем не менее, любопытствующих приглашаю под хабракат. Жду (конструктивных мнений), надеюсь (на снисхождение) и верю (в понимание).
Откуда растут ноги?
Услышав недавно старинную фразу: «Человек учится на ошибках», — и размышляя о НС, я пришла к неожиданному гибриду этих структур. Собственно, каков же он был? Искусственный нейрон — это «аналог» живого человеческого нейрона. Конечно, аналог грубый, но не зря же они называются одним словом. Как правило, вне зависимости от структуры НС, обучаются они все на правильных примерах: на вход подается эталонный вектор X, на выход — соответствующий ему вектор Y. Процедура повторяется, пока НС не усвоит информацию. Я бы сравнила подобный способ обучения со следующей ситуацией. Положим перед человеком лист бумаги, на котором начерчена прямая линия. Затем покажем как рисуется прямая линия (ставим карандаш в одну точку листа, не отрывая от листа ведем, потом отпускаем). Повторим процедуру несколько раз, пока человек не запомнит как все-таки рисуется прямая линия. И, наконец, предложим испытуемому нарисовать такую же линию самому. Стоит ли говорить, что у человека ничего не получится. Точнее получится, но линия будет не прямой. Не эталонно прямой. В этом месте повествования настало время вскричать: «Ага!», — и перейти к следующей части моей мысли.
Антинейроны
Как уже было указано выше, НС учатся на правильных примерах. Искусственный нейрон — «аналог» человеческого, а, как было видно из примера, сколько человеку прямую линию не показывай, сходу он её не нарисует. Так как же быть? Попробуем пойти от обратного. Если эталонная выборка не дает нужного эффекта, попробуем прямо противоположное — будем обучать НС на ошибках! Таким образом, на вход гипотетической сети будем подавать неверное значение X, а на выход — соответствующее ему значение Y. И что же в таком случае получится? А получится то, что мы самым грубым образом ограничим пространство вариантов. Иллюстрируя мое рассуждение на уже знакомо примере, предложим испытуемому линейку, то бишь ограничим пространство вариантов начертания линии (читай — листа). Уж с такой пустяковой проблемой наш незадачливый испытуемый должен справиться. Вот мы и получили чего хотели — прямую линию.
Собственно, спросите вы, а при чем тут антинейроны? Так при всем, отвечу я вам! Если обычные искусственные нейроны обучаются на правильной выборке, то пускай нейроны, обучающиеся на неправильных данных, будут зваться антинейронами. С терминологией разобрались, идем дальше.
Форматы данных
По хорошему говоря, НС должна работать с тремя видами данных:
- правила (они же — верные данные, они же — факты);
- ограничения (они же — неверные данные);
- исключения (ведь из каждого правила есть исключения, да?).
Но если присмотреться повнимательней, то факты — это «линии», полностью ограниченные сверху и снизу в пространстве вариантов. Тут стоит сделать маленькое лирическое отступление и рассказать, как же я вижу это самое пространство вариантов. Как говорится, лучше один раз увидеть, так что вот оно:
![image](https://habrastorage.org/getpro/geektimes/post_images/d12/42d/df8/d1242ddf8c9065f4a89eb929e2f9f240.jpg)
Итак, на арене — пространство вариантов! В левом углу — входные значения, в правом — выходные. Собственно, всё, что между ними — оно самое пространство. Вспоминая пример с линией, рисунок будет примерно таким (серым отмечено ограниченное пространство):
![image](https://habr.com/images/px.gif#%3D%22http%3A%2F%2Fimg5.imageshack.us%2Fimg5%2F4283%2F62821591.jpg%22)
Ну а само «правило» из списка выше — так же линия, только ограниченная и сверху, и снизу. К слову, тут стоит упомянуть такой момент, что факт может быть однозначным и неоднозначным. Под однозначным фактом я понимаю однозначное соответствие X и Y. А вот неоднозначный факт — это гораздо интереснее. Например, такой факт: «Я вижу небо, значит я смотрю вверх», — не будет однозначно соответствовать обратному. То есть если я смотрю вверх, совсем не обязательно, что я вижу небо. На графике такой неоднозначный факт будет представлен наклонной. Вход X будет падать на выход Y, а, как мы знаем из физики, угол падения равен углу отражения, так что соответствие ответит в какой-то другой X. Но ведь это в неограниченном пространстве вариантов! Ограничим пространство условием «если надо мной нет потолка». Тогда факт «Я вижу небо, значит я смотрю вверх» будет соответствовать обратному «Я смотрю вверх, и если надо мной нет потолка, я вижу небо». Смотреться это будет примерно так (отражала я на глаз, так что точность картинки сомнительная, но суть рассуждений должна быть ясна):
![image](https://habrastorage.org/getpro/geektimes/post_images/b36/fa2/74b/b36fa274b53cd24531b0f30f04df9076.jpg)
Собственно, правил и ограничений мы уже коснулись. А что же с исключениями? Так вот эти самые «дополнительные условия» и формируют исключения. Ну и под занавес вечера…
К чему все это?
На мой взгляд, подобная система (при нужной разработке и не полной бредовости всего вышесказанного) позволит решать задачи, например, в том же прогнозировании и принятии решений. Ведь при достаточном багаже форматов данных, можно задавать Y (то бишь цель), а НС будет говорить, что же нужно для реализации, то есть ставить в соответствие X.
Послесловие
Большое спасибо всем тем, кто осилил этот поток мысли! Благодарю за внимание.
UPD: Да, и еще маленькое пожелание. Уважаемые граждане минусующие, хотелось бы побольше конкретики, дабы можно было продолжать развиваться в умственном плане.