Содержание статьи
Нейрон, персептрон, кошка: фундаментальные отличия нейросетей. Часть 1
Перцептрон
Как правило, в большинстве нейронных сетей есть так называемый входной слой, который выполняет только одну задачу — распределение входных сигналов остальным нейронам. Нейроны этого слоя не производят никаких вычислений. В остальном нейронные сети делятся на основные категории, представленные ниже.
Ограниченная машина Больцмана (restricted Boltzmann machine, RBM) имеет сходства с машиной Больцмана и сетью Хопфилда: разница лишь в том, что RBM ограничена. В ней нейроны одного типа не связаны между собой. Обучать ограниченную машину Больцмана можно как нейросеть прямого распространения. Однако вместо прямой передачи данных и обратного распространения ошибки необходимо передавать данные сперва в прямом направлении, а после этого — в обратном. Затем следует обучение по методу прямого и обратного распространения ошибки.
Работу скрытых слоев нейронов можно сравнить с работой большого завода. Продукт (выходной сигнал) на заводе собирается по стадиям на станках. После каждого станка получается какой-то промежуточный результат. Скрытые слои тоже преобразуют входные сигналы в некоторые промежуточные результаты.
\(\beta\) — смещение bias. Это пороговое значение, которое смещает аргумент активационной функции, потому что активация (включение) нейрона может происходит не в точке 0, а в какой-то другой точке. А т.к. функция активации работает в точке ноль, то аргумент нужно сместить по оси x на смещение bias.
После обучения сети, то есть когда сеть выдает корректные результаты для всех входных сигналов из обучающей выборки, ее можно использовать на практике. Однако прежде чем сразу использовать нейронную сеть, обычно производят оценку качества ее работы на так называемой тестовой выборке.
Свёрточные нейронные сети (convolutional neural networks, CNN) и глубинные свёрточные нейронные сети (deep convolutional neural networks, DCNN) выделяются среди других видов сетей. Они используются для обработки изображений и аудио. Типичное применение CNN — классификация изображений: если на картинке есть кошка, то сеть выдаст результат “кошка”. Такие нейросети обычно анализируют не все данные сразу, а проходятся по ним фильтром с заданным размером: если у вас есть изображение 200×200, то сеть считает квадрат размера 20×20, сдвинется на 1 пиксель и считает новый квадрат. Затем входные данные передаются через свёрточные слои, в которых не все узлы соединены между собой. Эти слои могут сжиматься с глубиной, причем часто используются степени двойки: 32, 16, 8, 4, 2, 1. На практике — к концу CNN прикрепляют FFNN для дальнейшей обработки данных. Такие сети называются глубинными (DCNN).
Общая постановка задачи
Обучение по размеченному датасету называется обучением с учителем. Есть также другие варианты обучения. Например, без учителя. В данном случае правильные ответы отсуствуют и нейронная сеть должна найти их сама. Эта задача хорошо подходит, например, для нахождения общих признаков на большом количестве данных.
Основные принципы работы нейронных сетей были описаны еще в 1943 году Уорреном Мак-Каллоком и Уолтером Питтсом [1] . В 1957 году нейрофизиолог Фрэнк Розенблатт разработал первую нейронную сеть [2] , а в 2010 году большие объемы данных для обучения открыли возможность использовать нейронные сети для машинного обучения.
Ошибка на примере [math]x_n[/math] при этом, очевидно, уменьшается, но, конечно, совершенно никто не гарантирует, что вместе с тем не увеличится ошибка от других примеров. Это правило обновления весов так и называется — правило обучения перцептрона, и это было основной математической идеей работы Розенблатта.
Цепи Маркова (Markov chains, MC или discrete time Markov Chains, DTMC) не обязательно полносвязны и их смысл в следующем: каждое следующее состояние зависит только от предыдущего. Хотя цепи Маркова не являются нейронными сетями, они весьма на них похожи: у цепей Маркова есть начальные состояния (входные нейроны), промежуточные (скрытые нейроны) и конечные состояния (выходные нейроны).
Если обучать сеть, используя только один входной сигнал, то сеть просто «запомнит правильный ответ», а как только мы подадим немного измененный сигнал, вместо правильного ответа получим бессмыслицу. Мы ждем от сети способности обобщать какие-то признаки и решать задачу на различных входных данных. Именно с этой целью и создаются обучающие выборки.
Как видно из схемы однослойной нейронной сети, представленной справа, сигналы [math]x_1, x_2, \ldots x_n[/math] поступают на входной слой (который не считается за слой нейронной сети), а затем сигналы распределяются на выходной слой обычных нейронов. На каждом ребре от нейрона входного слоя к нейрону выходного слоя написано число — вес соответствующей связи.
Однослойный персептрон (англ. Single-layer perceptron) — перцептрон, каждый S-элемент которого однозначно соответствует одному А-элементу, S-A связи всегда имеют вес 1, а порог любого А-элемента равен 1. Часть однослойного персептрона соответствует модели искусственного нейрона.
Помимо входного и выходного слоев эти нейронные сети содержат промежуточные, скрытые слои. Такие сети обладают гораздо большими возможностями, чем однослойные нейронные сети, однако методы обучения нейронов скрытого слоя были разработаны относительно недавно.
Развертывающая нейронная сеть
Машина Больцмана (Boltzmann machine, BM) очень похожа на нейронную сеть Хопфилда. Однако в BM некоторые нейроны помечены как входные, в дальнейшем становящиеся выходными, а некоторые — как скрытые. Машина Больцмана является стохастической сетью и обучается по алгоритму имитации отжига или по алгоритму сравнительной расходимости.
Это основная идея алгоритма обратного распространения ошибки — Backpropagation. Данный процесс можно прогнать по всей сети, модифицируя веса для каждого нейрона. Для этого нужно взять производные активационных функций нейронов. Раньше приходилось вручную писать сложные производные для слоев с нетривиальной структурой. Теперь же все пакеты для работы с нейросетями дифференцируют их автоматически.
Искусственная нейросеть — это способ собрать нейроны в сеть для решения конкретной задачи. Все нейроны собираются по слоям. На входной слой подается входной сигнал, а с выходного слоя снимается результат работы нейросети. Между входным и выходным слоями есть некоторое число скрытых слоев, которые выполняют основные вычислительные операции. Если число скрытых слоев равно 1, то сеть считается неглубокой, если больше — глубокой.
Само обучение нейронной сети можно разделить на два подхода: обучение с учителем [на 28.01.19 не создан] и обучение без учителя [на 28.01.19 не создан] . В первом случае веса меняются так, чтобы ответы сети минимально отличались от уже готовых правильных ответов, а во втором случае сеть самостоятельно классифицирует входные сигналы.
Размеченный DataSet ( \(D\) ) — это набор данных и известных ответов к ним. По этому датасету обучаются нейронные сети. При этом датасет делится на две части. Обучающий и контрольный. По обучающему датасету нейронная сеть учится, а по контрольному тестируется. Важно, чтобы данные контрольного датасета не попадали в обучающий, иначе нейронная сеть просто заучит правильные ответы.
Как видно на рисунке справа, у нейрона есть [math]n[/math] входов [math]x_i[/math] , у каждого из которого есть вес [math]w_i[/math] , на который умножается сигнал, проходящий по связи. После этого взвешенные сигналы [math]x_i \cdot w_i[/math] направляются в сумматор, который аггрегирует все сигналы во взвешенную сумму. Эту сумму также называют [math]net[/math] . Таким образом, [math]net = \sum_^ w_i \cdot x_i = w^T \cdot x[/math] .