Впервые термин нейронные сети я услышал на втором курсе моего обучения на факультете ВМиК МГУ. С момента моего первого знакомства с этим феноменом прошло уже четыре года и моё понимание этого, для многих почти магического, термина теперь заставляет меня улыбаться каждый раз, когда я вижу какие-либо статьи на эту тему в научно-популярной прессе. В этой заметке я постараюсь коротко изложить свою историю знакомства с ними и параллельно объяснить что же это такое нейронные сети, с чем их едят и как к ним относиться.
Сейчас трудно вспомнить, но кажется впервые слова нейронная сеть я
услышал от одного из знакомых аспирантов. Я не помню что именно он мне о них
рассказал, но я хорошо помню мысль осевшую в памяти после разговора - нейронные
сети, это такие "программы" которые могут обучаться. Я не слишком
чётко представлял ни как, ни чему, ни зачем собственно эти сети умеют
обучаться, но сама идея меня сильно впечатлила. Первое же что пришло в голову -
можно сделать программу обучающуюся играть в крестики нолики. Собственно, это
был мой первый "проект" которому так и не суждено было осуществиться.
С интернетом в те времена было не просто, но таки смог достать распечатки
лекций Сергея Терехова "по теории и приложениям нейронных сетей" [1].
Вчитываясь в лекции я искал в них ответ на вопрос "как и чему может
обучиться машина?". Лекции, надо отдать дань автору, были написаны простым и понятным языком и проглотил я их содержание за несколько вечеров. Первое, что отложилось у меня в голове, это то, что нейронные сети - это некоторая модель алгоритма, способная с помощью некоторой методики обучения (то же алгоритма) "учиться" выполнению некоторой задачи. Задача, чтобы её решению можно было обучать нейронную сеть, должна представляется переводом одного вектора чисел в другой. Фактически, на том уровне понимания, мне казалось что нейронная сеть может позволить решить задачу отображения одних векторов чисел в другие, если настоящий, точный алгоритм неизвестен, но можно составить некоторый набор правильных примеров работы - пар вход-выход, обучающую выборку. Если и не всё, то уж точно большую часть в нашем мире можно так или иначе представить в виде чисел (долгожданный цифровой век наверное наступил уже тогда). Поэтому возможности нейронных сетей мне казались безграничными. Мне казалось, что скоро машины смогут обучаться решать любые задачи! Достаточно описать всё в виде преобразования векторов чисел и дело в шляпе. Не нужно часами сидеть и придумывать сложнейший точный алгоритм, которого может ещё и не существует - бери нейронную сеть побольше и задача решена.
Где-то через пол года я начал выполнять учебно-исследовательские задачки на кафедре, куда хотел распределиться, и взял себе задачу где требовалось распознать звучит ли в некотором небольшом сегменте звукового файла музыка или речь. То что я бы сейчас назвал задачей составления вектора признаков было уже решено до меня коллегой аспирантом и мне всего лишь требовалось запрограммировать какую-нибудь нейронную сеть для решения поставленной задачи. Задачку я кое-как решил, за что был награждён 5+ за курс, но в моём понимании нейронных сетей произошло серьёзное изменение. Теперь я понял, что главным свойством нейронных сетей является возможность обобщить информацию из ограниченной обучающей выборки на общую, вообще говоря, бесконечную совокупность всех возможных данных. В тот момент начали приходить неожиданные ранее вопросы: "а чем же это отличается от простой интерполяции/аппроксимации?", "как адекватно померить насколько хорошо нейронная сеть обобщает?", "как именно происходит это обобщение и отчего зависит то насколько качественно оно производиться?". Как ни странно, готовых ответов в доступной форме именно в литературе про сами нейронные сети найти не мог. В итоге, я составил большой обзор изученных мной различных видов нейронных сетей, который вы можете найти изложенным в двух статьях в нашем журнале [2][3]. Период великих надежд прошёл, сменился на период замешательства, который сменился разочарованием. Из всей литературы стало ясно одно - всю магию нейронных сетей можно изложить на одной странице математического текста с парой теорем понятных второкурснику. Нейронная сеть - это просто модель для аппроксимации функции по замерам сигмоиадами (функциями особого вида). Обучение (тот самый знаменитый алгоритм обратного распространения back propagation)- всего лишь метод минимизации ошибки системы на тренировочной выборке. Никакой магии обучения или её объяснения.
Но неужели, думал я, вся тайна обучения машин на этом и кончается? Мне хотелось увидеть строгую науку, дающую ответы на мои вопросы про возможность обучения алгоритмов, или, говоря вернее, машин. То, что нам читали на лекциях искусственному интеллекту интеллекту ничуть не пролило света на эти вопросы. Курс был смесью классической кибернетики и простейшей теории игр (автоматы, грамматики, деревья решений). В то время на кафедре я в основном занимался задачами обработки изображений и поэтому перестал уделять этой теме много внимания, хотя и не потерял интерес к ней. Поворотным был момент, когда передо мной встала конкретная прикладная задача обнаружения некоторых предопределённых объектов на изображениях. Когда кто-либо говорил про практическое применение нейронных сетей то всегда приводил в пример именно распознавание объектов на изображениях. Собрав солидную подборку литературы я обнаружил, что самым передовым является подход основанный отнюдь не на нейронных сетях, а на, доселе мне не ведомом, методе усиления слабых классификаторов. Начав разбираться в нём я обнаружил что существует целая наука (совершенно не привязанная к нейронным сетям и даже не придающая им особого значения) занимающаяся обучением и, как ни странно, так и называющейся Machine Learning - машинное обучение.
Как выяснилось, ответы есть. И теории есть. И наука ого-го как не стоит в этом плане на месте. Математический аппарат в этой области широк - в основном теория вероятностей и математическая статистика. Уже успели сформироваться целые научные школы и классические направления. Кстати, один из отцов основателей - Владимир Вапник, русский учёный в советские времена уехавший в Англию. Его основное достижение - получение теоритической оценки обобщающей способности (вероятности ошибки на всей совокупности данных) через ошибку на тренировочной выборке и сложности классификатора (размерности Вапника-Червоненкиса).
Комментарии
Плохо вы нейронные сети знаете!
Вы наверно ОЧЕНЬ поверхностно прошлись по нейронным сетям!
Нейронные сети
В интернете появился сайт, на котором рассмотрено интересное приложение для искусственных нейронных сетей, а именно нейронная сеть в качестве игрока в «хоккей». По словам автора игры игра в «хоккей» с управляющей нейронной сетью является отличным средством для исследования нейронных сетей прямого распространения. Имеющиеся средства построения сети, генерации выборки, обучения сети и визуализации позволяют легко строить нейронную сеть нужной топологии, обучать её, следить за всеми параметрами нейронной сети. В программе имеется окно с изображением хоккейного поля, двух игроков и шайбы, где пользователь может анализировать действия нейронной сети в игровой ситуации в реальном режиме времени. Программа позволяет строить и сохранять графики обучения сети, строить и сохранять графическую трассировку сети, имеется возможность открыть окно с подробными данными о параметрах обучения нейронной сети и значениями весов и изменений весов всех нейронов. Пользователь может сохранить построенную нейронную сеть, либо загрузить её из памяти. Такая же возможность имеется и для обучающей выборки. Противником нейронной сети является человек либо другая нейронная сеть.
Россия вперёд!!!
сАМИ НЕЙРОННЫЕ СЕТИ начали развиваться на западе. Унас же чт бне остать от жизни тоже взялись за эту проблему, вроде тиа актууально. Копнём глубже. С появлением компьютеров и программных средств развитие в данной области немного ускорилось. Я час про Запад говорю. У нас же , могучей нашей стране было не до этого, всё шло на оборонку, и чтобы не остать от жизни пришлось закупить те же миникомпы для общего пользования и развития граждан бывшемм ссср и настоящем России. В области моделирования запад разработал столько программных обеспечений, что нам россиянам пришлось их закупать, чтоб облегчить себе жизнь в сфере нейросетей(самый мощный пакет который мне известен это Матлаб). По мере того, как у нас обсуждали и говорили, за кардоном всё это практиковалось. И в нстоящее время большинство профессоров России в области моделирования на основе нейросетей грубо скажем так ноль. Это над ними нужно смеяться как они переводят хелпы програмных продуктов и ничего своего в области исследования не делают. А вы автор статьи, который говорит что смеётесь над статьями в области исследования с помошщью нейросетей, наверно из тех масс, которые не хотят кардинальных изменений в области науки, которым вобще не до этого, которым как в при царе в период феодализма "приобрести и довольствоваться приобретением" не желая менять время. Ну чё поделаешь, я вас понимаю.... обстановка не та, а жрать хочеться )))