Предисловие. Опубликовав первую часть понял, что само обучение перцептрона мало кого интересует, пока не будет экспериментальных результатов. И это разрешило мою дилемму о том, как сократить изложение для хабра. Мы пропустим разделы с объяснением архитектуры перцептрона TL&NL и начнем сразу с 4 раздела моей статьи.

4. Точность прогнозирования

В предыдущих разделах, мы стремились уменьшить число признаков (А - элементов), требуемых для решения задачи. И это понятно, т.к. обработка меньшего числа признаков требует меньше вычислительных затрат. Но выделяя только минимальное число признаков (и соответствующих A-элементов), и обучаясь только на части всех возможных примеров, мы рискуем построить слишком грубую модель. Её будет достаточно для решения задачи на обучающем множестве, но она будет плохо предсказывать. Представьте, что мы аппроксимируем окружность, и примеры нам показывают, что это многоугольник и во время прогнозирования мы исходим из того, на сколько углов мы обучили свою сеть. Поэтому, задача исследования в этом разделе состоит не в минимизации А-элементов, а в нахождении такого их количества, которое стабилизирует модель обобщения, которую строит перцептрон. Что означает стабилизация станет ясно из последующего изложения.

Для анализа точности прогнозирования будем использовать классические тесты MNIST по распознаванию рукописных цифр и MNIST Fashion по распознаванию пиктографических изображений одежды.

4.1. О методологии экспериментов

Отсутствие пред- и постобработки. Это не всегда очевидно, и различные исследователи часто явно или не явно используют некоторую предобработку обучающей и тестовой выборки. Мы должны строго разграничить обучающую выборку от тестовой, так, как например в результате некой нормализации происходит “подсказки от экспериментатора”, что не допустимо. Например, используя некие статистические характеристики и одинаково нормализуя обучающую и тестовую выборки происходит утечка информации, передача признаков тестовой выборки из обучающей выборки, или наоборот. По сути, это сводится к тому, что экспериментатор, зная тестовую выборку, косвенно подсказывает алгоритму, как ему обучаться. Поэтому важно, чтобы тестовая выборка была строго отделена от обучающей. Кроме того, мы хотим исследовать как именно работает алгоритм, а не то, как дополнительные манипуляции помогают решить задачу. Еще более важным, это становится при сравнении алгоритмов, в нашем случае перцептрона TL&NL с MLP+backprop. Поэтому в рамках наших экспериментов мы намеренно не допускаем никакой пред- и постобработки, за единственным исключением. В MNIST точки изображения даны в градации серого от 0 до 255. А нейросети удобнее работать с величинами на отрезке [0;1]. Поэтому единственную нормализацию, которую мы допускаем является разделение значения цвета на 255, как для обучающей, так и тестовой выборки.

Вычислительная оптимизация avx2. Задача MNIST структурно проще задачи четность, но она требует больших размерностей. Поэтому мы вынуждены произвести ряд оптимизаций с помощью операций avx. Если на задаче четности мы оптимизировали только SA активацию, то здесь мы оптимизировали все низкоуровневые расчеты: SA активацию, AR активацию, AR обучение, SA обучение и RND обучение. Но все равно этого недостаточно, чтобы прямо сравнивать с промышленной реализацией TorchSharp для backpropagation. Поэтому далее мы приводим условные цифры, которые не столько отражают скорость работы перцептрона, сколько уровень текущей оптимизации.

Упрощенный расчет чистоты окрестностей. Из-за больших размерностей задачи полноценно рассчитать чистоту окрестностей занимает больше времени, чем обучение нейросети. При этом расчет чистоты нужно делать каждую итерацию при обучении, чтобы понимать не начался ли расходящийся процесс из-за слишком большого уровня стохастического обучения (управляется параметром p3) и нехватки свободных нейронов в среднем слое (показывает характеристика gain). Но можно воспользоваться методом Монте-Карло, и вместо расчета для всех 60к примеров случайно отбирать каждую итерацию только 1000 примеров для анализа чистоты окрестности. Это позволит за сравнительно незначительное время получить лишь немного неточную оценку чистоты окрестностей.

Строгое и неуверенное предсказание. Классически строгим является такой выход у нейронной сети, по которому однозначно точно мы можем решить к какому классу нейросеть отнесла предъявленный пример (образ). Это означает, что мы на выходе в идеальном случае ожидаем точную цифру N, которая однозначно сопоставляется с классом. Частично, это решается введением порога в решающем элементе. Например, в задаче четность, если выход >0, то это класс нечетный, иначе четный. Тогда получается, что совсем не обученная сеть уже дает 50% правильных ответов. Таким образом, понятие точности прогноза сильнейшим образом зависит от интерпретации выхода. Совсем другую ситуацию мы имеем, когда у нейросети два выхода out, и тогда, если out1>0, то это класс нечетный, а если out2>0, то это класс четный. Здесь если сеть не обучалась, то 0% правильных ответов. Но если, она будет просто случайно угадывать, то только 25% будет правильными, т.к. комбинации 00 и 11 будут однозначно не верны.

В случае 10 классов, как у нас в задаче MNIST, ситуация еще более разительная. Если мы делаем вывод по принципу argmax (winner-takes-all), то случайный ответ будет давать 10% правильных ответов. Но если мы будем делать вывод исходя из классического строго определения, то у нас 2^10 = 1024 возможных состояний выхода, вероятность корректного выхода 10/1024 ≈ 0.98%, а вероятность, что корректный выход правильный = (10/1024) × (1/10) = 1/1024 ≈ 0.098%. Таким образом, мы существенно зависим от интерпретации того, какие выходы считать правильными. Поэтому в критически важный системах (медицина, безопасность) прогнозирование по принципу argmax недопустимо, но так как много исследований сделано именно с использованием argmax, когда допустим любой неуверенный ответ, далее мы будем различать E_hard – строгую ошибку от E_soft – мягкой ошибки.

Это важно не только для случая случайного ответа, но и тогда, когда нейросеть не может однозначно сделать выбор между двумя или тремя вариантами. Тогда используя принцип argmax мы теряем возможность понять это четкий ответ или неуверенное угадывание? Но действительно, в случае плохо изображенных букв, могут быть сомнения это 6, 8 или 9 и сомнения среди 3 вариантов – это все же лучше, чем отсутствие ответа. Методологически важным, является лишь то, чтобы сеть могла дать и тот и другой ответ, а недопустимым является то, когда сеть обучается исключительно из того, что ей нужно будет угадать.

Это приводит нас к пониманию, что, если сеть не может с уверенностью оторвать один выход от остальных — это диагностическое событие, и оно говорит о границах обобщающей способности сети, а не просто о неудачном предсказании. Другими словами, когда сеть видит два или более почти одинаковых класса, но не может их различить по своей внутренней структуре признаков, так как в противном случае построенная модель решения станет противоречивой – это является диагностическим событием того, что у сети нет достаточного количества признаков из которых можно сделать уверенный вывод. Например, сеть путает 6 и 8 не потому, что ошиблась, а потому, что у неё нет возможности развести эти два образа в своем внутреннем представлении. И если у неё тем не менее достаточно нейронов в среднем слое, это может только означать, что входные примеры сами по себе неоднозначны (плохое изображение, шум, значительное смещение).

Использование двух перцептронов. Понимание о диагностическом событии приводит нас к возможности для повышения качества прогноза использовать два или более перцептронов. В рамках этой статьи, полноценные эксперименты не проводились, но мы замерили, что если во время обучения отобрать 10% самых сложных для перцептрона A примеров, и на этой выборке обучить второй перцептрон B, то и на тестовой выборке он сможет правильно дать ответ для 20-30% примеров, для которых перцептрон A, из-за своей нагруженности более характерными (неспецифическими) примерами, давал неправильный ответ. Таким образом, точность прогноза можно повысить с обычных 98% до 99%. Критерием же, направления во второй перцептрон B является несовпадение E_hard c E_soft оценкой.

 4.2. Анализ перцептрона TL&NL на задаче MNIST

На рис. 6 показана динамика схождения перцептрона TL&NL в задаче MNIST с 5000 нейронов в среднем слое.

Рис.6. Обучение и точность прогноза перцептрона TL&NL на задаче MNIST с 5000 нейронов в среднем слое. E1 – ошибка на обучающей выборке в процессе обучения (по оси y – количество, по оси x - итерации). E2 – ошибки на втором уровне, когда обучается первый слой признаков. E_hard, E_soft – ошибки на тестовой выборке, различие см. в разделе 4.1.
Рис.6. Обучение и точность прогноза перцептрона TL&NL на задаче MNIST с 5000 нейронов в среднем слое. E1 – ошибка на обучающей выборке в процессе обучения (по оси y – количество, по оси x - итерации). E2 – ошибки на втором уровне, когда обучается первый слой признаков. E_hard, E_soft – ошибки на тестовой выборке, различие см. в разделе 4.1.

Мы видим, что перцептрон обучается до нулевой ошибки примерно за 110 итераций, при этом E2 – ошибка на втором уровне, когда нужно корректировать SA веса опускается до нуля еще быстрее (около 30 итераций). При этом точность прогнозирования достаточно высока и сравнима с MLP + backpropagation около 97,5%. А именно 255 ошибок при неуверенном предсказании, и 545 ошибок при строгом предсказании.

На рис. 7. показано какую роль играет увеличение числа нейронов в скрытом слое. Увеличение до 10к нейронов уменьшает схождение до нуля на обучающей выборке до 57 итераций, а точность прогноза улучшается на пол процента (до 204 ошибок). Увеличение еще в два раза нейронов до 20к, дает еще меньше улучшений до 194 ошибок.  А при 30к нейронах (на рис. 7 не показано) лучший результат прогнозирования 177 ошибок (98,23%).

Важно отметить, что была замерена точность прогноза во время обучения после каждой итерации. И именно, эти характеристики мы видим на рис. 7. Вначале обучения, пока внутренняя модель нейросети о задаче MNIST только формируется мы видим, как много на кривой “выбросов”, чем дальше обучение подходит к концу точность прогноза стабилизируется. Эта важная характеристика перцептрона TL&NL указывает на то, что он в отличии от MLP+backprop не может переобучится (overfiting). Более того, мы наблюдаем, что при обучении до нуля стабильность прогнозирования только увеличивается (линия выпрямляется). Так же на стабилизацию положительно влияет большие количество нейронов в скрытом слое.

Рис.7. Точность прогноза перцептрона TL&NL на задаче MNIST с 5k, 10k и 20k нейронов в среднем слое. E_hard, E_soft – ошибки на тестовой выборке, различием см. в разделе 4.1.
Рис.7. Точность прогноза перцептрона TL&NL на задаче MNIST с 5k, 10k и 20k нейронов в среднем слое. E_hard, E_soft – ошибки на тестовой выборке, различием см. в разделе 4.1.

Комментарии (0)