Как нейроны стали линейной алгеброй
В статье о весовых матрицах мы переходили между двумя представлениями нейронной сети: нейронами, соединёнными с другими нейронами, и матрицей, преобразующей вектор. Когда понимаешь вычисление, этот переход кажется небольшим шагом. Но исторически он потребовал серьёзного изменения в том, как исследователи понимали предмет своей работы.
Чтобы увидеть, насколько далеко зашло это изменение, достаточно открыть книгу Фрэнка Розенблатта Principles of Neurodynamics, опубликованную в 1962 году. На странице 83 он определяет матрицу взаимодействий, описывающую связи между элементами. Рядом настраиваемые параметры сети становятся координатами в евклидовом пространстве. Обучение можно описать как движение по этому пространству.
До современных библиотек глубокого обучения ещё несколько десятилетий. А матрица уже здесь.
Интересно понять, как она здесь появилась и почему со временем стала привычным способом объяснять и программировать нейронную сеть. Первые исследователи пытались разобраться в вычислении, распознавании и памяти. Каждая задача предъявляла к модели свои требования и делала полезной ещё одну часть математики.
Трудность с полностью заданной схемой
Нейрон либо срабатывает, либо нет. Это наблюдение стало отправной точкой для работы Уоррена Маккаллоха и Уолтера Питтса 1943 года. Если активность нейрона можно идеализировать как событие по принципу всё или ничего, возможно, сети таких нейронов можно изучать средствами логики.
Их упрощённые элементы имели пороги и задержки. Одни входы возбуждали элемент, тормозящие входы могли не дать ему сработать. Зафиксировав структуру сети, исследователи могли изучать, как её активность выражает логические отношения, в том числе между событиями в разные моменты времени.
Привлекательность такого подхода понятна. Вместо того чтобы сразу разбираться во всех биологических подробностях, можно было задать схему и рассуждать о том, что она вычисляет. Рисунок соединённых клеток становился математическим объектом.
Но описание схемы оставляет за рамками многое из того, что делает обучение интересным. Животное приобретает навыки благодаря опыту. Значит, в системе должно быть что-то, способное меняться.
В книге The Organization of Behavior, опубликованной в 1949 году, Дональд Хебб связал это изменение с эффективностью связей. Он предположил: если одна клетка многократно помогает другой сработать, устойчивое изменение может усилить её влияние. Это была биологическая гипотеза, сформулированная словами. Она дала последующим математическим моделям конкретное место, где можно было сохранять последствия опыта.
Розенблатт хотел получить количественное описание того, как способна обучаться система с частично случайными связями. В своей статье о перцептроне 1958 года он указал на трудность логического подхода: общая организация нервной системы может быть известна, тогда как её точные связи остаются неизвестными. Поэтому в основу своей модели он положил теорию вероятностей.
Этот выбор меняет сам вопрос. Если схема задана точно, мы можем спросить, что она вычисляет. Если группа элементов описана статистически, мы можем спросить, при каких условиях она приобретёт полезное поведение.
Перцептрон Розенблатта включал сенсорные, ассоциативные и реагирующие элементы; часть связей между ними была случайной. Обучение меняло то, как активность ассоциативных элементов влияла на реакции. Это была гораздо более богатая модель, чем один пороговый нейрон, с которого сегодня обычно начинают знакомство с перцептронами.
Теперь нужно было различать паттерны активности, настраивать связи и предсказывать ход обучения. Логика позволила формально анализировать нейронные вычисления. Теория вероятностей дала Розенблатту возможность исследовать их, не зная каждой связи.
Когда связь стала координатой
Как только силы связей становятся настраиваемыми числами, появляется полезная возможность: каждый набор их значений можно считать точкой. Обучение становится путём среди возможных настроек.
Бернард Уидроу и Марсиан Хофф сделали этот взгляд конкретным в своей работе об ADALINE 1960 года. Их адаптивное устройство имело коэффициенты, которые можно было менять, чтобы уменьшить ошибки. При анализе входы представлялись векторами, а средняя квадратичная ошибка образовывала поверхность над пространством значений коэффициентов.
Они измеряли ошибку до того, как заключительный порог превращал сигнал в дискретное решение. Это давало численную поверхность, по которой адаптация могла двигаться к минимуму. Один и тот же коэффициент был и настройкой устройства, и координатой в задаче оптимизации. Само правило обучения мы разбираем в статье об ADALINE.
Это возвращает нас к книге Розенблатта. Его матрица взаимодействий объединяла коэффициенты связей между элементами, причём отсутствующей связи соответствовал ноль. Пространство параметров описывало возможные состояния памяти сети. Далее он использовал ранг и вырожденность матриц для анализа того, какие классификации способны реализовать перцептроны.
Матрица действительно помогала что-то объяснить. Сеть можно было изучать как единое целое, а свойства этого целого сообщали то, что трудно увидеть, рассматривая связи по отдельности.
Эта же сила математики могла противоречить оптимистичным ожиданиям. В книге Perceptrons, опубликованной в 1969 году, Марвин Минский и Сеймур Пейперт исследовали системы, которые собирали частичную информацию с помощью детекторов признаков и принимали решение по взвешенной комбинации их выходов. Подзаголовок книги, An Introduction to Computational Geometry, показывает, насколько важным стал математический взгляд.
Возьмём чётность: нужно определить, чётное или нечётное число активных пикселей содержит изображение. Авторы доказали, что перцептрон, объединяющий выходы детекторов одним взвешенным пороговым решением, не может решить эту задачу для всех входов, если хотя бы один детектор не зависит от всего изображения. Если каждый детектор видит лишь часть изображения, никакая настройка итоговых весов не заставит систему справляться с задачей. Ограничение задавали архитектура и её признаки.
Значит, обучение было сложнее, чем поиск удачных сил связей. Имело значение и представление, подаваемое на эти связи. Если оно не позволяло провести нужное различие, модели требовался другой способ представить вход.
Матрица, которая могла помнить
Распознавание было лишь одной причиной интересоваться изменением связей. Память ставила другую задачу: как опыт может оставить след, который позднее удастся восстановить по подсказке?
Карл Штейнбух обратился к этой задаче в Die Lernmatrix, опубликованной в 1961 году. Название означает обучающуюся матрицу. Предложенная им схема имела фазу обучения, когда сигналы, представляющие свойства, подавались вместе с соответствующим значением, и фазу воспроизведения, когда предъявление одного позволяло восстановить другое. Он предлагал реализации на магнитных запоминающих элементах или электрохимических процессах и видел применения в распознавании символов и поиске информации.
Память становилась инженерной задачей: как изменить массив элементов при обучении, чтобы проходящие через него сигналы позднее восстанавливали ассоциацию.
Теуво Кохонен продолжил эту тему в Correlation Matrix Memories, опубликованной в 1972 году. Он явно заменил переключательную матрицу Штейнбуха корреляционной матрицей, изучая математику ассоциативного воспроизведения и оставляя возможную биологическую роль модели за рамками статьи.
В варианте, где сохранялось каждое попарное произведение, ассоциация связывала вектор-ключ с вектором данных. Умножение каждой компоненты данных на каждую компоненту ключа давало внешнее произведение: матрицу попарных произведений. Память хранила сумму таких матриц с общим масштабным коэффициентом. Применение этой матрицы к ключу давало восстановленный паттерн.
Та же математика объясняла, почему воспроизведение могло ошибаться. Похожие ключи могли добавлять нежелательные вклады от других ассоциаций. Воспоминания, хранящиеся вместе, могли мешать друг другу.
В работе, опубликованной в том же году, Джеймс Андерсон подошёл к такой же конструкции из произведений через локальные изменения синапсов. Связь менялась пропорционально произведению активности передающей и принимающей клеток. Если каждая клетка одной группы соединена с каждой клеткой другой, эти изменения образуют такое же внешнее произведение. Здесь численное правило Хебба становилось обновлением матрицы: локальные изменения накапливались в хранилище, из которого позднее можно было восстановить связанный паттерн.
Джон Хопфилд придал задаче памяти особенно узнаваемую форму в своей статье 1982 года: представьте, что нужно восстановить полную библиографическую ссылку по фрагменту, возможно, даже с опечаткой.
В его сети активность возвращалась по рекуррентным связям. Неполный паттерн мог постепенно переходить в сохранённый. Матрица связей описывала влияние элементов друг на друга, а отдельный вектор — их текущие состояния.
При симметричных связях, отсутствии связей элемента с самим собой и асинхронных обновлениях Хопфилд мог показать, что функция энергии не возрастает при изменении состояний. Это связывало нейронное воспроизведение с поведением взаимодействующих физических систем. Сохранённые паттерны могли действовать как аттракторы: состояния, к которым сходилась близкая активность.
Во время воспроизведения связи оставались неизменными. Устанавливалось состояние активности. Матрица связей вместе с нелинейными обновлениями объясняла, как неполная подсказка могла привести к более полному паттерну.
Мы уже далеко ушли от простого занесения сил связей в таблицу. Матрицы помогали объяснить, как сохранялся опыт, почему воспоминания мешали друг другу и как сеть восстанавливала паттерн по неточной подсказке.
Научиться тому, что должен видеть следующий слой
В задаче распознавания оставалась трудность, выявленная анализом перцептронов: полезные решения зависели от полезных признаков. Могла ли сеть приобретать и сами признаки благодаря опыту?
Один показательный результат получил Эркки Ойя в 1982 году. Он исследовал линейный нейрон с правилом Хебба, изменённым так, чтобы ограничивать рост весов. При условиях его анализа веса приближались к собственному вектору матрицы вторых моментов входа, соответствующему наибольшему собственному значению. Для входов с нулевым средним это направление первой главной компоненты.
Правило, выраженное через локальные изменения связей, могло извлекать известную статистическую структуру. Линейная алгебра помогала определить, чему именно учился нейрон.
У сети с несколькими этапами возникала дополнительная трудность. Обучающие примеры могли задавать ответ, но обычно не указывали, что должен обнаруживать каждый промежуточный элемент. Желаемое поведение на выходе должно было направлять изменения внутри сети.
Дэвид Румельхарт, Джеффри Хинтон и Рональд Уильямс наглядно показали эту возможность в Learning Representations by Back-Propagating Errors, опубликованной в 1986 году. В их примерах настраивались как выходные, так и скрытые связи. Исследуя сеть, обученную распознавать зеркальную симметрию, они рассматривали выученные веса, чтобы понять вклад промежуточных элементов в решение.
У вычисления производных были более ранние корни: работа Сеппо Линнайнмаа об обратном накоплении, начатая в его диссертации 1970 года, и диссертация Пола Вербоса 1974 года, о которой он рассказал в позднейшем обзоре. Демонстрация 1986 года ясно показала, зачем этот аппарат нужен нейронному обучению: ранние этапы могли учиться создавать признаки, необходимые последующим.
Вычисления разобраны в нашей статье об обратном распространении ошибки. Для этой истории важно то, что именно стало настраиваемым. Обучение могло формировать преобразования, создающие внутреннее представление, а также итоговое решение на его основе.
Картина соединённых нейронов по-прежнему описывала сеть. Картина последовательных выученных преобразований описывала то, чего сеть достигала.
Как схема стала программой
К этому моменту векторы и матрицы могли описывать связи, воспоминания, статистические признаки и преобразования между слоями. Человеку, входящему в эту область, требовался способ понять все эти описания вместе.
Майкл И. Джордан предложил такой способ в первом томе Parallel Distributed Processing, опубликованном в 1986 году. Его вкладом стала глава 9 — учебное введение в линейную алгебру, используемую для анализа моделей этого тома.
Он объяснял векторные пространства, скалярные произведения и линейность, показывая, как простые коннекционистские модели соответствуют операциям над векторами. Читатель осваивал математический язык, который можно было переносить из одной модели в другую.
Здесь хорошо видно, как эта связь становилась частью обучения самой дисциплине. Исследователи использовали матрицы уже несколько десятилетий. Теперь крупное изложение коннекционистских моделей включало введение, специально учившее читателя мыслить в этих терминах.
Тот же сдвиг виден в книге Кристофера Бишопа Neural Networks for Pattern Recognition, опубликованной в 1995 году. В предисловии Хинтон представил её как ответ на потребность в понятном изложении, опирающемся на линейную алгебру, математический анализ и теорию вероятностей.
Бишоп двигался от более простых статистических моделей к многослойным сетям. Начинающий читатель мог изучать нейронные сети как часть математического рассмотрения оценивания, оптимизации и обобщения. Путь от биологической аналогии к численным моделям всё больше становился частью преподавания предмета.
Программы сделали этот язык практическим. В наборе инструментов NETLAB Иэна Нэбни матричное описание было непосредственно воплощено в коде. Его процедура прямого прохода принимает матрицу входных примеров. Умножение матриц, добавление смещения и нелинейная активация вычисляют скрытый слой. Ещё одно умножение матриц передаёт его активность на выходной этап.
В каждой строке находится один пример, поэтому одни и те же операции проводят целый пакет примеров через оба слоя. Связи на схеме стали коэффициентами в программе.
Для студента, который учится по таким книгам и инструментам, оба описания появляются одновременно. Отдельного момента открытия, что слой может быть матрицей, уже нет: именно так слой объясняют и реализуют.
Позднее GPU сделали организацию этих операций ещё важнее. В своей работе 2009 года о масштабном обучении без учителя Раджат Райна, Ананд Мадхаван и Эндрю Ын выразили вычисления для глубоких сетей доверия через матричные операции, которые могли эффективно выполнять параллельные численные процедуры. Чтобы получить выигрыш, было необходимо объединять работу в пакеты и ограничивать передачи данных между памятью CPU и GPU. Этот практический вопрос разобран в нашем сравнении CPU и GPU.
Алгебра также давала язык для обсуждения архитектурных решений. В статье о Transformer 2017 года авторы объединили запросы, ключи и значения в матрицы и указали на оптимизированное матричное умножение как на преимущество внимания на основе скалярного произведения перед аддитивным вниманием по скорости и использованию памяти. Теперь часть матриц описывала взаимодействия, вычисляемые по текущему входу, расширяя этот язык за пределы фиксированных сил связей.
Две картины, с которых мы начали, стали привычными вместе, потому что переход между ними оказался столь полезен исследователям. Представление нейронной активности числами, а связей коэффициентами дало взвешенному суммированию точное алгебраическое описание, сосуществующее с нелинейными операциями сети. Это описание помогало объяснять обучение и память, а затем стало языком учебников и программ. Изучая сегодня подпространства весовой матрицы, мы наследуем эту историю: способ видеть сеть, ставший естественным благодаря использованию.