Файл: Изложение Вся основная информация в одной книге Графы, алгоритмы поиска, ранжирования и многое другое.pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 23.11.2023

Просмотров: 185

Скачиваний: 3

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

ГЛУБОКОЕ ОБУЧЕНИЕ 137
x
2
x
1
x
2
x
1
Процесс обновления весов и сдвигов в нейронной сети похож на то, как мы обновляли отдельно взятый нейрон. Здесь опять используются математические производные. Нейронную сеть можно считать одной большой функцией, пере- менными которой выступают веса и сдвиги всех ее нейронов. Таким образом мы можем вычислить производную для каждого из этих значений с учетом по- тери и обновить нейрон с помощью этой производной. Мы подошли к ключе- вой части процесса обучения: алгоритму обратного распространения потери.
Для каждого ввода и желаемого вывода:
1) вычисляется вывод и потеря нейронной сети; мы проходим слой за слоем от входа к выходу;
2) обновляются веса и сдвиги нейронов, чтобы минимизировать по- терю; теперь двигаемся от выходного слоя к входному.
Используя алгоритм обратного распространения, мы можем создавать сложные нейронные сети и учить их выполнять разные задачи. Системы глу- бокого обучения состоят из простых компонентов. Это искусственные ней- роны с ограниченными вычислительными возможностями: они принимают ввод, умножают его на веса, слагают, добавляют сдвиг и применяют к полу- ченному значению функцию активации. Но если их много и они соединены между собой особым образом в нейронные сети, их можно научить выпол- нять немало полезных задач.

138 ГЛАВА 6
1   ...   6   7   8   9   10   11   12   13   14

Распознавание одежды
Давайте повернем разговор в более практичное русло и представим, что нам нужно создать нейронную сеть для распознавания элементов одежды, изо- браженных на рисунках. Это будет задача по распознаванию образов. Нейрон- ные сети отлично проявили себя в этой области.
Каждый образ будет представлен небольшой фотографией размером
28 × 28. Наш учебный набор данных состоит из 60 000 образов, а тестовый — из 10 000; первый будет использоваться для обучения нейронной сети, а вто- рой — для оценивания того, насколько хорошо она обучилась. Вот пример образа, на который мы нанесли оси координат и сетку, чтобы вам было легче ориентироваться:
5 0
10 15 20 25 5
0 10 15 20 25
Образ разделен на отдельные мелкие участки — именно так происходит цифровая обработка изображений. Мы берем весь прямоугольный участок и делим его на небольшие фрагменты в количестве 28 × 28 = 784. Каждому фрагменту назначается целочисленное значение от 0 до 255, соответствую- щее определенному оттенку серого: 0 означает полностью белый цвет, а 255 — полностью черный. Приведенный выше образ можно представить в виде ма- трицы (см. следующую страницу).
В реальности нейронные сети обычно требуют сведения входных значе- ний к узкому диапазону, такому как от 0 до 1, иначе они могут плохо работать; можете считать, что большие значения сбивают нейроны с толку. Из этого следует, что перед использованием матрицы каждую ячейку следовало бы по- делить на 255, но мы намеренно пропустим данный этап.

ГЛУБОКОЕ ОБУЧЕНИЕ 139
Предметы одежды могут относиться к десяти разным классам, которые перечислены в таблице ниже. С точки зрения компьютера, классы — это про- сто разные числа, которые мы называем метками.
Метка
Класс
Метка
Класс
0
Футболка/блузка
5
Сандалия
1
Брюки
6
Рубашка
2
Джемпер
7
Кроссовок
3
Платье
8
Сумка
4
Пальто
9
Ботильон

140 ГЛАВА 6
На следующем рисунке показан случайный набор из десяти предметов каждого вида. Как видите, изображения довольно разнообразные, и не все они являются идеальными примерами того или иного класса. Это делает нашу задачу интереснее. Мы хотим создать нейронную сеть, которая при- нимает на вход подобные образы и возвращает вывод с информацией о том, к какой категории они, по ее мнению, принадлежат.
И снова наша нейронная сеть будет состоять из слоев. В первом слое ока- жутся 784 входных нейрона. Каждый из них станет принимать один ввод, со- ответствующий одному фрагменту изображения, и просто возвращать его в виде своего вывода. Если на рисунке изображен ботильон, первый ней- рон получит на вход значение левого верхнего фрагмента, 0, и вернет этот 0.
Остальные нейроны получат значения фрагментов строка за строкой, сверху вниз, слева направо. Фрагмент со значением 58 в правом конце каблука бо- тильона (четвертая строка снизу, третий столбец справа) будет передан ней- рону и скопирован в качестве его вывода. Строки и столбцы в нашей нейрон- ной сети отсчитываются сверху и слева, поэтому данный нейрон находится в 25-й строке сверху и 26-м столбце слева, что делает его порядковый номер равным 24 × 28 + 26 = 698.


ГЛУБОКОЕ ОБУЧЕНИЕ 141
Следующий слой будет плотно соединен с входным слоем. Он состоит из 128 нейронов типа ReLU. Этот слой не имеет прямой связи ни со вход- ными изображениями (в отличие от входного слоя), ни с выводом (так как мы добавим еще один слой). Следовательно, он скрытый, так как его не видно из-за пределов нейронной сети. Поскольку соединение плотное, это приведет к большому числу связей между входным и скрытым слоями. Каждый нейрон в скрытом слое будет соединен с выводами всех нейронов входного слоя. Это означает, что у каждого нейрона окажется 784 входных соединения, а во всем слое — 784 × 128 = 100 352.
Добавим последний слой, который содержит выходные нейроны, возвра- щающие результаты работы нейронной сети. Всего нейронов будет 10, по од- ному на каждый класс. Каждый из них будет соединен со всеми нейронами скрытого слоя, всего 10 × 128 = 1280 соединений. Общее количество связей между всеми слоями в нейронной сети составит 100 352 + 1280 = 101 632.
Принцип работы полученной системы проиллюстрирован на следующей странице. Мы не можем уместить все узлы и ребра, поэтому большинство уз- лов во входном и скрытом слоях обозначены прямоугольниками с точками внутри; в первом прямоугольнике 780 узлов, а во втором — 124. Все соеди- нения, направленные к отдельным узлам в прямоугольниках, сведены в одну точку.
Вывод нашей нейронной сети будет состоять из 10 значений, по одному на каждый нейрон в слое. Каждый выходной нейрон представляет отдель- ный класс, а его вывод означает вероятность принадлежности изображения к этому классу; в сумме значения всех 10 нейронов дадут 1, как и полагается при работе с вероятностными величинами. Это пример очередной функции активации, которая называется softmax; она принимает на вход вектор веще- ственных чисел и преобразует их в распределение вероятностей. Давайте рас- смотрим два следующих примера.

142 ГЛАВА 6
входное изображение входной слой
784
нейрона скрытый слой
128
нейронов выходной слой футболка/
блузка брюки джемпер платье пальто сандалия рубашка кроссовок сумка ботильон
Если взять первый пример, показанный сверху, после обучения сеть вы- даст следующий вывод:
Выходной нейрон
Класс
Вероятность
1
T- shirt/top
0,09 2
Trouser
0,03 3
Pullover
0,00


ГЛУБОКОЕ ОБУЧЕНИЕ 143
Выходной нейрон
Класс
Вероятность
4
Dress
0,83 5
Coat
0,00 6
Sandal
0,00 7
Shirt
0,04 8
Sneaker
0,00 9
Bag
0,01 10
Ankle boot
0,00
Таким образом нейронная сеть выражает уверенность в том, что это пла- тье, оценивая вероятность этого в 83%. Незначительными вероятностями того, что это может быть футболка/блузка, рубашка или брюки можно пре- небречь.
Во втором примере, показанном справа, сеть возвращает такие резуль- таты:
Выходной нейрон
Класс
Вероятность
1
T- shirt/top
0,00 2
Trouser
0,00 3
Pullover
0,33 4
Dress
0,00 5
Coat
0,24 6
Sandal
0,00 7
Shirt
0,43 8
Sneaker
0,00 9
Bag
0,00 10
Ankle boot
0,00
Нейронная сеть выражает 43-процентную уверенность в том, что она имеет дело с рубашкой — это ошибка; в действительности на фотографии изображен джемпер (если вы вдруг сами не догадались). Тем не менее на вто- ром месте с 33% находится правильный вариант.
В одном примере сеть дала верный ответ, а в другом ошиблась. В целом, если предоставить ей все 60 000 изображений из нашего учебного набора дан- ных, она сумеет правильно распознать около 86% в тестовом наборе, состоя- щем из 10 000 изображений. Довольно неплохо, учитывая, что эта нейронная

144 ГЛАВА 6
сеть хоть и намного сложнее предыдущей, все равно является относительно простой. На ее основе можно создавать более сложные сетевые структуры, способные давать лучшие результаты.
Несмотря на повышенную сложность, наша нейронная сеть учится точно так же, как и более простая сеть из предыдущего примера, которая распозна- вала скопления данных и концентрические круги. Для каждого ввода в ходе обучения мы получаем вывод, который затем сравнивается с желаемым ре- зультатом с целью вычисления потери. Теперь же в виде вывода возвращается не одно значение, а сразу десять, хотя принцип остается прежним. Когда ней- ронная сеть распознает рубашку с примерно 83-процентной вероятностью, мы можем сравнить это с идеальным результатом, то есть с вероятностью
100%. Таким образом у нас получаются два набора выходных значений: те, что сгенерировала сеть, и те, которые мы бы хотели получить (набор, в кото- ром правильный ответ имеет вероятность 1, а все остальные — 0). Ниже при- водится сравнение полученных и желаемых результатов в последнем примере.
Выходной нейрон
Класс
Вероятность
Цель
1
T- shirt/top
0,00 0,00 2
Trouser
0,00 0,00 3
Pullover
0,33 1,00 4
Dress
0,00 0,00 5
Coat
0,24 0,00 6
Sandal
0,00 0,00 7
Shirt
0,43 0,00 8
Sneaker
0,00 0,00 9
Bag
0,00 0,00 10
Ankle boot
0,00 0,00
Мы берем последние два столбца и вычисляем показатели потери — только на этот раз у нас много значений, поэтому здесь нельзя обойтись про- стой разницей в квадрате. Для получения разницы между наборами подоб- ных значений существуют специальные величины. В нашей нейронной сети мы будем использовать одну из них, категорийную перекрестную энтропию, которая определяет, насколько сильно отличаются два распределения вероят- ностей. Вычислив потерю, мы обновляем нейроны в выходном слое. Дальше обновляются нейроны в скрытом слое. Если коротко, то мы выполняем обрат- ное распространение.


ГЛУБОКОЕ ОБУЧЕНИЕ 145
Мы выполняем тот же процесс для всех изображений в нашем учебном на- боре данных, то есть для всей эпохи. Закончив, повторяем все сначала для сле- дующей эпохи. При этом мы пытаемся найти баланс: подобрать достаточное количество эпох для того, чтобы нейронная сеть извлекла как можно больше пользы из учебного набора данных, но не слишком много. В ходе обучения сеть скорректирует веса и сдвиги нейронов, которых довольно много. Вход- ной слой всего лишь копирует значения в скрытый, поэтому его регулиро- вать не нужно. Однако в скрытом слое находится 100 352 веса и 128 сдвигов, а в выходном — 1280 весов и 10 сдвигов, что в сумме дает 101 770 параметров.
Знакомство с глубоким обучением
Сами по себе нейроны мало на что способны, но нейронной сети по силам лю- бая вычислительная задача, которую можно описать алгоритмически и вы- полнить на компьютере — это доказуемый факт. Следовательно, нейронная сеть может делать все то же самое, что и компьютер. Но, конечно, вся суть в том, что нейронной сети не нужно объяснять, как именно выполнять задачу.
Достаточно предоставить ей примеры и обучить ее с помощью алгоритма.
Одним из таких алгоритмов, как мы уже видели, является обратное распро- странение. В этой главе рассматривалась лишь классификация, но нейрон- ные сети можно применять к задачам любого рода. Они могут предсказывать значения определенных величин (таких как кредитный рейтинг), перево- дить текст с одного языка на другой, а также распознавать и генерировать речь; они сумели победить чемпионов в игре го, продемонстрировав совер- шенно новые стратегии, которые поставили в тупик даже экспертов. Чтобы научиться играть в го, им достаточно было знать правила игры. Они не имели доступа к библиотеке уже проведенных поединков, и в процессе обучения они просто играли сами с собой.
Сегодня существует множество примеров успешного применения ней- ронных сетей, но принципы, на которых они основаны, не новы. Перцеп- трон изобрели в 1950-х, а алгоритму обратного распространения уже больше
30 лет. За это время интерес к потенциалу нейронных сетей то появлялся, то пропадал. Но в последние несколько лет кое-что изменилось: мы полу- чили возможность создавать по-настоящему огромные сети. Это достигнуто благодаря прогрессу в сфере производства специализированных компью- терных чипов, способных эффективно выполнять вычисления, которые при- меняются в нейронах. Если представить себе все нейроны нейронной сети,