- Регистрация
- 23 Август 2023
- Сообщения
- 2 856
- Лучшие ответы
- 0
- Реакции
- 0
- Баллы
- 51
Offline

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 и перцептрон, как два бойца, находятся примерно в одной весовой категории, хотя и с достаточно разными характеристиками, из-за которых их достаточно сложно сравнивать.
Продолжение следует