Диссертация (1090484), страница 7
Текст из файла (страница 7)
Алгоритмповторяется в двух фазах цикла, распространение и обновление веса. Когдавходной вектор поступает в сети, она распространяется через сеть, слой за слоем, пока не достигнет выходного слоя. Выход в сеть, то по сравнению с желаемого результата, используя функцию потерь, и значение ошибки рассчитываетсядля каждого из нейронов в выходном слое. Значения ошибки, затем распространяется в обратном направлении, начиная с выходных, пока каждый нейронимеет соответствующее значение ошибки, которая примерно представляет свойвклад в суммарную ошибку выхода [131].
Обратное распространение ошибкииспользует вычисленные ошибки для вычисления градиента функции потерьотносительно весов в сети. На втором этапе, этот градиент подается на методоптимизации, который, в свою очередь, используется для изменения весов, сцелью минимизации функции потерь.Пусть ŷ - целевой вектор нейронной сети. Ошибки на выходном слое есть:δi = yi − ŷi .(2.9)Основная идея метода обратного распространения ошибки состоит в том, чтоошибки на каждом скрытом слое вычисляются по ошибкам следующего слоя:δi =X62wij δj .(2.10)Рис.
2.2: Обратное распространение ошибки.Зафиксируем входной вектор x, функция потерь сети [132] можно записывать как функционал среднеквадратичной ошибки, который зависит от весовсети:11ξj (w) = δj2 = (yj − ŷj )2 .22(2.11)Частные производные [133] ξ по весам:∂ξj∂ξj ∂yj=∂w ij ∂yj ∂wij∂( 21 (yj − ŷj )2 ) ∂σ(zj )=∂yj∂wij∂σ(zj ) ∂zj= (yj − ŷj )∂zj ∂wijP∂σ(zj ) ∂( wij yi )= δj∂zj∂wij∂σ(zj )= δjyi .∂zj(2.12)(2.13)(2.14)(2.15)(2.16)Если функция активации нейронной сети является одной из перечисленных∂σ(z )функций (2.3), (2.5), (2.7), то производная ∂zjj вычисляется по формулам (2.4),(2.6), (2.8) соответственно.632.3Метод стохастического градиентаСтандартный метод градиентного спуска [134]:θ = θ − α∇θ E[J(θ)].(2.17)Метод стохастического градиента [135], при котором градиент вычисляетсяпо каждому образцу, или по нескольким образцам:θ = θ − α∇θ J(θ; x(i) , y (i) ).(2.18)Импульс для ускорения оптимизации:2.4v = θv + α∇θ J(θ; x(i) , y (i) ),(2.19)θ = θ − v.(2.20)АвтоэнкодерОдин из алгоритмов глубинного обучения - автоэнкодер (англ.
autoencoder)[136], это алгоритм обучения без учителя, выходной вектор которого равныйвходному вектору признаков. Одной из самых распространенных архитектуравтоэнкодера является нейронная сеть прямого распространения, без обратныхсвязей, содержащая входной, скрытый и выходной слои. В отличие от персептрона, выходной слой автоэнкодера должен содержать столько же нейронов,сколько и входной слой. Данные на входном слое сжимаются на скрытом слоеи восстанавливаются на выходном слое, таким образом выделяются скрытыепризнаки.642.4.1Скрытые признаки и глубинное обучениеОдин из самых распространенных способов классификации - на основе описанийобъектов, используя признаки, каждый объект описывается набором числовыхили нечисловых признаков.
Однако, для некоторых типов данных, открытыепризнаки не дают хорошей точности классификации, например, цвета точекизображений или цифровой звуковой сигнал. Классификация изображений собак и самолетов является простой для человека но очень сложной для машины.В чем причина? Эти типы данных содержат скрытые признаки, которые человек может легко воспринимать, а машина нет, например, у собаки есть морда,глаза и нос, а у самолета - крылья [137].Глубинное обучение (англ. deep learning) представляет собой набор алгоритмов машинного обучения, которые пытаются моделировать высокоуровневыеабстракции в данных, иными словами выделять из данных скрытые признаки[138].652.4.2АвтоэнкодерРис.
2.3: Автоэнкодер.Цель автоэнкодера - чтобы выход нейронной сети был наиболее близким к входному вектору. Для того, чтобы решение этой задачи было нетривиальным, натопологию сети накладываются особые условия:1. Количество нейронов скрытого слоя должно быть меньше, чем размерность входных данных;2. Количество неактивных нейронов в скрытом слое должно значительнопревышать количество активных нейронов;Первое ограничение позволяет получить сжатие данных при передаче входного сигнала на выход сети. Такое сжатие возможно, если в данных есть скрытые взаимосвязи, корреляция признаков или структура. Второе ограничение –требование большого количества неактивных нейронов скрытого слоя, — позволяет получать нетривиальные результаты даже когда количество нейронов66скрытого слоя превышает размерность входных данных, другими словами, цельавтоэнкодера - получать только самые особые признаки. Будем считать нейронактивным, когда значение его функции передачи близко к 1 и наоборот, неактивным если значение его функции передачи близко к 0.Эти ограничения заставляют автоэнкодер искать обобщения и корреляцию впоступающих на вход данных, выполнять их сжатие.
Таким образом, нейроннаясеть автоматически обучается выделять из входных данных общие признаки,которые кодируются в значениях весов сети. Необходимо чтобы среднее значение функции передачи каждого скрытого нейрона приняла значение, наиболееблизкое к заданному разреженному параметру (порядка 0.05). Для этого былдобавлен в каждый нейрон скрытого слоя параметр разреженности ρ:m 1 X (2) (i)a (x ) .ρ̂j =m i=1 j(2.21)Необходимо чтобы среднее значение функции передачи каждого скрытогонейрона приняла значение, наиболее близкое к ρ:ρ̂j = ρ.(2.22)В качестве штрафной функции используется сумма расстояний Кульбака —Лейблера всех нейронов скрытого слоя [30]:S=s2XKL(ρ|ρˆj ),(2.23)j=1где расстояние Кульбака — Лейблера [139]:KL(ρ|ρˆj ) = ρ logρ1−ρ+ (1 − ρ) log.ρˆj1 − ρˆj67(2.24)Производная расстояния Кульбака — Лейблера:ρ1−ρ∂KL(ρ|ρˆj )=− +.∂ρjρˆj 1 − ρˆj(2.25)Рис.
2.4: Расстояние Кульбака — Лейблера для ρ = 0.2.Автоэнкодер является очень хорошим методом кластеризации текстов. Задача здесь - представить тексты таким образом, что они могут быть легко и точнокластеризовать. Подходы обычно связаны с векторным представлением текстовстатистическим путем, для каждого слова считать количество раз оно встречается в соответствующем тексте. Эти векторы, конечно, обладают очень высокой размерности (количество разных слов в тексте), поэтому их размерностьнадо уменьшить, например, методом главных компонент (Principal ComponentAnalysis - РСА), а также другими методами оптимизации [140]. В 2006-м году68Хинтон использовал автоэнкодер, чтобы уменьшить размерность 804414 векторов размерности 2000, обозначающие вероятности конкретных слов в лентеновостей. Как видно по результатам, autoencoders значительно лучше работаетчем стандартные методы латентно-семантического анализа, которые основанына методе главных компонент, а также лучше чем алгоритм нелинейного снижения размерности алгоритм [136].Рис.
2.5: Сравнение методов кластеризации текстов.Многослойный автоэнкодер и глубинное обучениеМногослойный автоэнкодер [141] представляет собой нейронную сеть, состоящую из нескольких обычных автоэнкодеров в которой выходы каждого автоэнкодера подключен к входам следующего автоэнкодера.69Рис. 2.6: Многослойный автоэнкодер.Преимущество многослойного автоэнкодера является то, что он обучаетсяхарактеристики, которые формируют хорошие представления объектов.
Первый слой автоэнкодера обучается характеристики первого порядка. Второй слойобучается характеристики второго порядка по характеристикам первого порядка, полученных от первого слоя, и так далее [142].2.5Свёрточная нейронная сетьСегодня искусственная нейронная сеть широко используется для решения различных задач в реальной жизни. Такие проблемы как распознавание речи илиоптическое распознавание символов теперь решают с использованием нейроннойсети с высокой точностью. В данном разделе рассматривается одна специальная архитектура нейронной сети - свёрточная нейронная сеть [143], также еёструктура и применения для классификации различных типов данных [30].702.5.1СвёрткаАвтоэнкодер подходит для процесса обучения на данных небольшого размера, апри больших данных количество параметров (количество весов между входными скрытым слоями, а также количество весов между скрытым и выходным слоями) существенно вырастет.
Например, при классификации картинок размеромm * n = 8 * 8, хотим выделять k = 50 признаков, тогда входной и выходной слойимеют m * n = 8 * 8 = 64 нейронов, а скрытый слой имеет k = 50 нейронов,количество весов равно 2 * m * n * k = 2 * 8 * 8 * 50 = 6400. Но если картинкиимеют размер m * n = 100 * 100, то количество весов будет 2 * 100 * 100 * 50 =1000000.Чтобы размер нейронной сети не был большим и не зависел от размера обучающих данных, будем использовать специальную структуру нейронной сети,называемую свёрточной нейронной сети (англ.
Convolutional Neural Network CNN) [144]. Например, при обучении для каждого образца на вход свёрточнойнейронной сети подается не вся картинка m * n, а только ее часть r * c, например, 10 * 10, эта часть называется фильтром или ядром, и она сдвигаетсяпо большой картинке. Такая свёрточная нейронная сеть имеет фиксированноеколичество нейронов на входном и выходном слоях r * c = 10 * 10 = 100, аколичество весов 2 * r * c * k = 2 * 10 * 10 * 50 = 10000.Для каждой большой картинки m * n берем маленькие картинки r * c дляобучения, их количество равно (m - r + 1) * (n - c + 1).Рис. 2.7: Свёртка.712.5.2СубдискретизацияПри использовании свёрточной нейронной сети возникает проблема, это большое количество выделенных признаков, для одной большой картинки m * nбудет (m - r + 1) * (n - c + 1) маленьких картинок r * c, и количество выделенных признаков равно k * (m - r + 1) * (n - c + 1) = 50 * (100 - 10 + 1) * (100- 10 + 1) = 414050, использование такого огромного количества признаков дляклассификации оказалось неэффективно.Для уменьшения размера пространства признаков, проводим субдискретизацию (англ.















