Давайте изобретать велосипеды!!!
Мотивации пост.Я занимаюсь алгоритмами обучения нейронных сетей. Пока что простых нерекурентных нейронных сетей. Пока сравнительно простыми алгоритмами, той или иной формой градиентных спусков. Сегодня разговаривал на интересном семинаре по нейроинформатике, и меня спросили, зачем переоткрывать то что придумано? И правда, есть же матлаб. Любой может в два движения создать и обучить стандартную сетку одним из готовых стандартных и уже оптимизированных алгоритмов, обучить какой-нибудь страшно стандартной задаче классификации и всё у него будет хорошо. Тем более это актуально, учитывая что с 70-ых годов прошлого века в деле обратного распостранения ошибки не произошло ничего принципиально нового. А новые сетки уже тоже есть в матлабе.В этом посте я постараюсь показать почему…нужно изобретать велосипед.
Меньше слов, так сказать, больше картинок. Я сел и за несколько часов сделал пару видео.
Будем решать задачку из предыдущей моей статьи. Возмём стандартную проверенную десятелетиями сеть, многослойный перцептрон в 4 слоя по 10 нейронов, полносвязанный с дополнительным биас-синапсом у каждого нейрона (со времён Румельхарта нет ничего более скучного). На вход ему будем подавать координаты в диапазоне [-1;1], а на выходе ожидать предсказания в виде трёх чисел, какого цвета точка должна быть на фотографии летящего павлина в этом месте. А потом запрашиваем у сети цвета для всех точек в рамках картинки и смотрим чему она научилась.
Слева картинка которую рисует сеть, у неё внизу RMSE — среднеквадратичная ошибка сети по всем точкам картинки. Справа внизу график среднеквадратичной ошибки по всем точкам эпохи. Точки выбираются случайно, поэтому ошибка отличается от средней по всем данным. График динамически перемасштабируется чтобы было лучше видно. А вверху у графика масштаб. Наконец последний верхний правый квадрат это положение сети в случайном двухмерном фазовом пространстве. Этот метод визуализации подробно описан в одной из моих прошлыйх статей. Очень удобно чтобы понимать что там внутри сети происходит.
Первую сеть Будем учить самым дубовым методом — обычным градиентным спуском. Учебные примеры будем скармливать пачками по 300 точек. Метод до сих пор используется как часть более сложных алгоритмов. Например при обучении козырных глубоких сетей. На видео 1000 эпох по одному кадру на эпоху. Скорость адаптивная, в диапазоне 0.1–0.01[embedded content]
На видео видно, что уже к середине обучения сеть почти перестаёт улучшать ошибку на отметке RMSE = 0.35, но по фазовой картинке видно, что в сети идёт какой-то устойчивый боковой дрейф ниже уровня шума. Пройдём ещё примерно 8000 эпох за несколько последних кадров и увидим локальный минимум в котором этот дрейф заканчивается. Сеть остановилась на рубеже RMSE=0.308, дальше над ней издеваться уже бессмыслено.
Теперь возмём второе видео. Те же самые 4 слоя по 10 нейронов. Но тут я включаю почти что всю мощь моих лучших полустохастических алгоритмов, придуманных в процессе переизобретения велосипеда. Размеры пачки для Mini-batch адаптивно меняются с 100, до 1000, скорость также ходит на полтора порядка.[embedded content]
Сразу видно, что тут всё на много бодрее. Сеть за 100 эпох проходит предел, до которого метод из учебника не дотянулся и за много тысяч, и уже через 500 эпох мы любуемся на гораздо более красивую картинку, которая смогла дотянуться до RMSE=0.24 возможно это ещё не конец и это драматически лучше алгоритмов без стохастики. По картинке видно, что сеть освоила гораздо более красивые преобразования.
Но дело даже не в этом. Давайте сравним этот достаточно неплохой результат с картинкой из прошлой статьи. Полученной почти теми же алгоритмами со стохастикой, но на сети, у которой нет такого рудимента, как фиксированные слои. RMSE=0.218
Лично мне одного взгляда достаточно чтобы понять, что прежде чем двигаться дальше некоторые вещи в нейроинформатике не помешало бы и переоткрыть. Как говорил Джобс «Stay Hungry. Stay Foolish.» Очень многое в нейронауках может быть улучшено самым обычным человеком на самом обычном домашнем компьютере если у него будет идея, и он выкроит время чтобы ей заниматься. Слишком мало знаний пока накоплено здесь, слишком многое осталось в наследие от времён компьютеров, занимающих этаж, слишком много замечательных алгоритмов просто никто ни разу не попробовал.
И тогда, возможно, завтра гугл предложит за вас миллиард, или даже ещё круче, в вашу честь назовут будущие мозги в банке. Или ещё круче — вам будет интересно жить на белом свете.