C. Яковлев mg.sc.comp e-mail: tac1402@gmail.com

Disclaimer.  Это анонс, я еще работаю над научной статьей, но пока не могу найти ментора для возможности публикации в arxiv.org. Но пока хочу поделиться с вами некоторыми сырыми результатами.

Аннотация. Классический перцептрон Розенблатта с архитектурой S–A–R исторически не имел устойчивого алгоритма обучения многослойных структур. В результате в современном машинном обучении доминирует метод обратного распространения ошибки (backpropagation), основанный на градиентном спуске. Несмотря на успехи, этот подход имеет фундаментальные ограничения: необходимость вычисления производных нелинейных функций и высокая вычислительная сложность. В данной работе показано, что при интерпретации работы нейросети через алгоритм ID3 (Rule Extraction) скрытый слой автоматически формирует чистые окрестности в смысле кластерного анализа — признаки группируются по классам ещё до завершения обучения. На основе этого наблюдения автором предложен новый стохастический алгоритм обучения, восходящий к идеям Розенблатта, но принципиально расширяющий их: он позволяет обучать скрытые слои перцептрона без вычисления градиентов. Таким образом, впервые решается классическая проблема обучения архитектуры S–A–R без градиентных методов. Это открывает путь к созданию принципиально новых алгоритмов обучения нейросетей с более простой и интерпретируемой динамикой.


Введение. Перцептрон, как искусственная нейронная сеть, разрабатывался Ф.Розенблаттом в 1957-61 года [1]. Только 1969 г.  Минский и Паперт публикуют свой анализ ограничений перцептрона [2]. К сожалению, в 1971 г. Розенблатт погибает, так и не ответив на критику Минского и Паперта. А DARPA прекращает финансирование, о чем упоминается в отчете 1989 года [3], в связи с желанием возобновить финансирование работ в области коннективизма. В центре, внимания тогда рассматривалась работа о новом подходе к обучению нейросетей – backpropagation [4]. Благодаря, упрощенному изложению в отчете DARPA и борьбе за финансирование возникают множественные неточности и недоразумения, которые отмечают некоторые ученые [5]. А также показывают успешность применения классического перцептрона Розенблатта с архитектурой S-A-R [6]. Но в целом, о перцептроне Розенблатта в научном сообществе забывают, и понимание о нем вырождается в однослойный перцептрон, которым он никогда не был. Поэтому следует напомнить, что хотя Розенблатт и предлагал свой “метод коррекции с обратной передачей сигнала ошибки”, он был стохастическим и имел плохую сходимость. К сожалению, последующие ученые недооценили роль случайности, используемую в работе перцептрона.  Автором ранее уже были предложены практические уточнения [7] достаточных условий для того, чтобы перцептрон был в состоянии сформировать пространство, удовлетворяющее гипотезе компактности. Но на практике так и оставалось не ясным как обучать скрытый слой перцептрона, без вычисления градиентов, в отличии от того, как это делается в алгоритме backpropagation. Конечно, автор понимает, что успех метода backpropagation и его результаты может затмевать любые альтернативные способы обучения нейросетей. И мы их покажем в сравнении на простой задаче четность. Но учитывая, как много времени и усилий различных, ученых прямо или косвенно были посвящены различным аспектам работы нейросетей, в основе которых находится алгоритме backpropagation, не стоит ждать от альтернативных методов сразу потрясающих результатов. Дело в том, что прямо сравнивать MLP+backpropagation vs. Perceptron сложно, т.к. они принципиально по-разному решают задачи классификации.

 Так экспоненциально или линейно?

Часто можно услышать вывод, что перцептрон Розенблатта требует экспоненциально больше нейронов, чем алгоритм backpropagation. В этом разделе покажем, что это не соответствует истине. Экспоненциальность относится к росту состояний в скрытом слое, а не к числу нейронов. Само же число нейронов, требуемое для решения все более сложной задачи, растет линейно. Здесь и далее, для демонстрации характеристик нейросетей мы будем использовать задачу четности.

Подробно черновик первого раздела представлен на моем канале в ютубе.

Здесь же я просто дам 2 таблицы и кратко их обсудим.

Для задачи четность результаты представлены в таблице 1.

Кол-во бит

Кол-во возможных комбинаций

Число нейронов в скрытом слое

Итераций

Время

Требуемая память

8

256

150*

17

< 1 сек.

15 Мб

10

1024

300*

26-65

< 1 сек.

16 Мб

12

4096

600*

314

< 2 сек.

17 Мб

14

16384

1400

150

< 2 сек.

25 Мб

16

65536

3000

383

60 сек.

78 Мб

17

131072

4500

821

6 мин.

178 Мб

18

262144

6000

574

10 мин.

401 Мб

19

524288

9000

367

20 мин.

1, 0 Гб

20

1048576

12000

529

69 мин.

2,4  Гб

 * - при числе нейронов < 1000 высока вероятность отсутствия решения, поэтому указано ориентировочное число для практического решения.

В таблицах даны условные цифры, чтобы можно было понять порядок величин. Хотя автор и пытался задать как можно меньшее число нейронов и при этом минимизируя общие время нахождения решения, понятно, что это число может быть немногим меньше, если подождать существенно дольше, или найти лучший random seed, или наоборот, дать чуть больше нейронов, чтобы схождение произошло быстрее. Эти цифры надо воспринимать как вырожденный случай, который показывает, на каком минимальном числе нейронов практически возможно произвести обучение за разумное время.

Из таблицы 1. видим, что требуемое число нейронов в скрытом слое требует совсем не экспоненциальный рост, а линейный, хотя и существенно больший чем этого требует алгоритм backpropagation (см. таблицу 2). Но мы должны, четко понимать базовую разницу между этими подходами:

1.      MLP-backpropagation использует нелинейную функцию активации, а перцептрон, тоже нелинейную, но пороговую, для которой нельзя посчитать градиент

2.      MLP-backpropagation – это градиентный метод, который требует для своего решения глобальное знание сети, а у перцептрона, каждый нейрон самостоятелен и локален

3.      MLP-backpropagation для обучения вычисляет градиент и распространяет его назад, а перцептрон, не обучает слой S-A (в нем происходит “эффект случайности”, когда входной вектор отображается на пространство признаков в скрытом слое), и по правилу Хебба обучает только последний A-R слой

4.      Для MLP-backpropagation используется промышленная реализация с использованием библиотеки TorchSharp с обучением пакетами = 32, т.е. максимально оптимизированно. А для перцептрона используется “наивная реализация” на C# без какой-либо оптимизации скорости.

 Задача четность MLP-backpropagation (TorchSharp, MSELoss, Adam, batch_size = 32, shuffle = false, lr = 0.0001)

Кол-во бит

Кол-во возможных комбинаций

Число нейронов в скрытом слое

Итераций

Время

Требуемая память

8

256

50

7124

25 сек.

435 Мв

10

1024

100

3919

44 сек.

451 Мв

12

4096

100

6041

4 мин.

456 Мв

14

16384

150

3153

11 мин.

462 Мв

16

65536

200

518

7 мин.

484 Мв

17

131072

300

185

6,5 мин

517 Мв

18

262144

300

132

9,5 мин

546 Мв

19

524288

300

103

15 мин.

629 Мв

20

1048576

300

149

42 мин.

757 Мв

Итак, в целом, перцептрон и MLP+backpropagation обнаруживают очень сходные характеристики. Да, число нейронов для перцептрона требуется больше и главное скорость роста нейронов при усложнении задачи выше, чем у MLP+backprapagation. Но нейрон у MLP скажем так, более “тяжелый”, требует более сложных вычислений и занимает сходное для вычислений время. Но проблема в том, что дальнейший рост числа нейронов у перцептрона становится очень проблематичным. В алгоритме мы пользовались тем, что S-A веса фиксированные, и активность среднего слоя можно запомнить для каждого примера. Но уже в задаче четности с 20 битами, мы видим резкий скачек требуемой памяти. Если же отказаться от хранения активности среднего слоя, его придется пересчитывать при каждом показе нового примера. MLP+backpropagation оптимизирует это используя пакетное обучение и также существенный вклад делает оптимизатор Adam, для перцептрона же мы пока не использовали никаких оптимизаций, кроме сохранения активаций фиксированного скрытого слоя. Но как минимум, мы видим, что на старте MLP+backpropagation и перцептрон, как два бойца, находятся примерно в одной весовой категории, хотя и с достаточно разными характеристиками, из-за которых их достаточно сложно сравнивать.

Продолжение следует

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