Дога Пойраз ТАХАН

Кафедра промышленной инженерии Университета MEF
Стамбул / Турция [email protected]

Аннотация. В этом исследовании я проведу наземное исследование и обзор литературы по подтеме «Глубокая нейронная сеть» в области машинного обучения. Я также объясню, почему Deep Neural Network имеет свои преимущества, а также какое приложение она имеет. Чтобы получить необходимую информацию, я в значительной степени полагался на лекции из Массачусетского технологического института и Стэнфорда. Одним из наиболее часто используемых ресурсов в этой статье является курс Эндрю Н.Г. Моя методология заключалась в том, чтобы сначала как можно глубже изучить тему, а затем пытаться акцентировать внимание на тех моментах, которые я считал решающими для технической части темы. Глубокая нейронная сеть, безусловно, будет одним из самых важных алгоритмов, которые будут использоваться в этой области.

Ключевые слова: машинное обучение; Искусственный интеллект; Нейронная сеть; НН; ДНН

И. Введение

Глубокое обучение — это, по сути, компьютерная модель, которая пытается имитировать человеческий интеллект, имитируя нейроны в мозгу. Прежде чем мы прыгнем прямо вперед, нам нужно определить, что такое интеллект. В самом общем смысле интеллект — это способность обрабатывать информацию, чтобы ее можно было использовать для информирования будущих прогнозов и решений [1]. Когда этот интеллект возникает из-за естественного вдохновения, такого как люди, мы называем это биологическим интеллектом. Но если он разработан, чтобы преуспеть и понять способность выбирать и предсказывать, мы называем этот искусственный интеллект широко известным как ИИ. У ИИ есть много подполей, которые смешались с различными дисциплинами в научном сообществе, и одна из них, конечно же, информатика, известная как CS, поскольку нам нужна большая вычислительная мощность, для которой обычный человек не подходит. Работу ученых-компьютерщиков обычно называют машинным обучением, также известным как машинное обучение. Машинное обучение заработало свое название, пытаясь имитировать способность к обучению биологических форм, не имея программиста, который мог бы выразить то, что должен делать компьютер. Это обычно переводится на турецкий язык как «Makine Öğrenimi», что может быть неправильно понято, поэтому люди, которые работали в этой области, обычно предпочитают имя «Özgül Öğrenim» [2]. Это более подходящее название для того, что делается, потому что нам нравится, когда программа изучает способности сама по себе. У машинного обучения есть много подполей, которые обещают осуществимые методы обучения. Но прямо сейчас в этой области наиболее раскрученным методом машинного обучения является глубокое обучение, также известное как глубокое обучение.

DL особенно блестит и волнует исследователей своей способностью

имеют превосходные результаты по компьютерному зрению и распознаванию изображений. Несмотря на то, что концепции DL уходят корнями в научные сообщества с 1980-х годов, успех в 2012 году в конкурсе под названием imagenet [3]. Алгоритм, использующий метод DL для дифференциации объектов, выиграл конкурс. Но ажиотаж вокруг возникает не потому, что алгоритм выиграл соревнование, а потому, что по точности алгоритм намного превзошел своих конкурентов на достаточно сложном объекте. Это соревнование сейчас де-факто пример, когда люди говорят об обещаниях DL.

Сегодня в этой области есть алгоритмы, которые могут добиться большей точности, чем человеческий уровень, при распознавании изображений.

Но у DL также есть проблемы, потому что он работает как то, что мы называем черным ящиком. Когда мы пытаемся понять, почему алгоритм завершает работу над решением, мы просто не замечаем этого. Это основная цель машинного обучения, но она еще больше усложняет работу исследователя по дальнейшему развитию этой области. Несмотря на его упряжь, новые исследования появляются день ото дня. Тема достаточно популярна, и в эту область активно обращаются новые исследователи. Одним из основных направлений деятельности исследователей является понимание и использование нейронной сети для обратной связи по принимаемому ею решению.

Теперь эта область обещает преуспеть в распознавании изображений, прогнозировании будущих акций, обнаружении рака, создании музыки для распознавания речи. Одна из самых удивительных вещей в DL заключается в том, что после заданных входных данных он может создать практически все, что вам нравится, чтобы строить снизу вверх. Это подводит нас к другой нашей задаче. Найти необходимый большой набор данных — не всегда простая задача. К сожалению, DL нужно то, что мы назвали

Дога Пойраз ТАХАН

Кафедра промышленной инженерии Университета MEF
Стамбул / Турция [email protected]

структурированные и размеченные данные. Вот почему в настоящее время большие данные также становятся горячей темой.

II. Текущее положение поля

функция активации является бинарной, и она будет определять информацию, проходящую через этот нейрон.

Математическая модель:

Традиционные алгоритмы машинного обучения задают заранее запрограммированные функции в данных и работают над извлечением этих функций в рамках своего конвейера. Во многих практических ситуациях эти функции чрезвычайно хрупки, что означает, что если действительно крошечная часть данных не соответствует предварительно запрограммированным функциям, она не включается. Таким образом, программист должен быть бесконечно конкретным в своем алгоритме выбора. Это на практике просто невозможно. Ключевым отличительным фактором в DL является то, что вместо получения определенного набора функций он пытается создать свои собственные функции, а также пытается понять, какая функция содержит больше информации, чем другие. Например, при обнаружении лица Программа сначала обнаруживает края и углы, а затем пытается получить глаза, нос и другие типы черт лица из положения и соотношения краев и углов. Используя этот метод, он может продвинуться еще выше по иерархии, чтобы обнаружить лицо. Если вы хотите спросить, как это работает. В самом простом смысле вы должны создавать как можно больше итеративных фьючерсов. Каждая функция станет узлом. Эти узлы собираются и объединяются для создания нейронной сети. После этого все, что нужно сделать алгоритму, — это выяснить, какие узлы имеют отношения и какова важность этого отношения по сравнению с другими. Это будут фундаментальные строительные блоки Deep Neural Networks или просто Neural Networks, также известные как DNN или NN. Название «глубокий» происходит от невозможности понять, почему отношения строятся в DNN, поскольку в ней слишком много слоев. Когда слишком много слоев и слишком много нейронов в одном слое, невозможно проследить, какой нейрон на какой влияет. Но DNN использует ускорение только в последнее десятилетие. Единственная причина этого в том, что сейчас у нас больше данных, чем было за тысячелетия. Кроме того, современная архитектура графического процессора (GPU) лучше подходит для этих задач, чем когда-либо прежде. Наконец, и, на мой взгляд, наиболее важной причиной будет то, что наборы инструментов с открытым исходным кодом, такие как тензорный поток, у людей есть доступ к информации и предварительной работе, необходимой для разработки идей.

III. Основы

DL состоит из того, что мы называем Перцептроном. Персептроны подобны деталям Lego в алгоритме глубокого обучения. Персептрон — это всего лишь один нейрон в сети. DL пытается понять все о данных. Итак, для этого ему необходимо распознать функцию на атомарном уровне. Для этого Perceptron начинается с довольно простой структуры. Все начинается с потока информации, который называется прямым распространением. Персептрон получает свои данные. Есть масса информации. Каждый вход умножается на соответствующий вес, а затем суммируется, чтобы получить только одно значение. Это значение используется для нелинейной функции активации, которая будет рассмотрена на следующих страницах. Этот

Смещение является необходимостью, потому что некоторые нейроны или функции имеют начальный эффект, даже если нет никаких признаков, которые могли бы повлиять на решение, чем смещение больше нуля. Если смещение функции не активируется до определенного момента и начинает иметь значение после накопления достаточного количества входных данных, смещение меньше нуля. Смещение работает как перехват функции. Это позволяет нашей функции активации смещаться влево или вправо.

В исследованиях глубокого обучения мы используем линейную алгебру и скалярное произведение, чтобы иметь более простые и понятные математические формулы, а иногда и для создания более эффективных вычислений, основанных на выводах из алгебр.

В финальной версии:

Функция активации

Математически функция активации представляет собой сигмовидную функцию. Свойства сигмовидной функции: ее область определения определяется от -∞ до +∞, ее диапазон определяется от 0 до 1. Это означает, что любое входное значение имеет соответствующее значение вероятности в функции активации. На изображении видно, что функция имеет s-образную форму. Форма этой буквы S исходит из формулы сигмовидной формы:

Свойства сигмовидной функции: ее область определения определяется от -∞ до +∞, ее диапазон определяется от 0 до 1. [5] Это означает, что любое входное значение имеет соответствующее значение вероятности в функции активации. Из-за этих свойств сигмоидальные функции широко используются, когда желаемый результат является вероятностью. На изображении видно, что функция имеет S-образную форму. Форма этой буквы S меняется в зависимости от функции активации в этом нейроне.

Сигмовидная функция, конечно, не единственная функция активации. В зависимости от предпочтительного вывода мы можем выбрать различные функции, такие как гиперболические функции.

или ректифицированная линейная единица y = max(0,x)

Необходимость в функции активации возникает из-за естественной склонности действовать нелинейно. Расчет, который мы сделали до сих пор с скалярным произведением, — это просто линейный расчет. С помощью функции активации мы теперь также имеем нелинейное поведение.

  1. Создание сети

Мы знаем, что перцептроны чрезвычайно просты. Но что произойдет, если мы начнем их комбинировать.

Изображение, которое вы видите, является таким примером, и это то, что мы называем NN, а не DNN, поскольку слоев недостаточно. Учитывая 3 входа, персептрон принимает решение о том, принадлежат ли входы z1 или z2.

Комбинируя их, мы можем получить гораздо более сложную структуру и начать лучше моделировать нелинейность и сложность обучения.

IV. Применение нейронных сетей [9]

Теперь может показаться, что нам нужно построить нейронную сеть, но мы упустили одну важную деталь. И это весы. Как мы будем их определять? Мы можем

использовать человеческую интуицию, но, поскольку отношения между узлами будут экспоненциально возрастать, возникнет практически невозможная проблема, о которой мы упоминали ранее. Итак, для этого мы сначала начнем с полностью случайных весов. Первая интуиция обычно заключается в том, чтобы избежать случайности, но на самом деле это важная часть процесса, поскольку разные начальные случайные веса могут сходиться к разным значениям в конце.

Теперь приходит часть данных. Чтобы найти реалистичные значения веса для имитации реальности, мы хотели бы получить чистый представляемый набор данных и изучить его на основе этого. Определяя веса, на самом деле алгоритм вычисляет математическую карту для выбора между выходами. Просто мы учим алгоритм реального мира. Получая обратную связь от реальных данных, мы формируем нашу модель.

Чтобы понять, меняем ли мы вес в правильном направлении, нам понадобится еще одна функция, называемая функцией стоимости. Функция стоимости дает результат того, насколько мы отличаемся от фактических данных.

Это эмпирическое измерение ошибки. Мы будем использовать эту функцию в концепции, называемой потерей перекрестной энтропии Softmax. Перекрестная энтропия и энтропия — чрезвычайно мощное понятие, которое было фактически разработано исследователем Массачусетского технологического института Клодом Шенноном в 1950-х годах. Эта концепция широко используется в таких областях, как обработка сигналов или термодинамика, а также во многих областях CS, в которых используется теория информации. Эта концепция позволяет нам освободиться от дискретных двоичных результатов 0 и 1. Это позволяет нам более подробно ответить на вопрос. Ответом может быть любое число в числовом поле. Мы можем использовать и другие типы функции потерь, такие как широко используемый закон среднеквадратичной ошибки. Этот закон возвращает квадратично более высокую стоимость, когда прогноз дальше от фактического. При всем этом у нас есть четкий механизм, чтобы быть лучше в нашей модели. если бы мы могли уменьшить значение нашей функции стоимости, у нас была бы лучшая модель.

Потеря оптимизации

Если нам нужно понять, как мы собираемся минимизировать нашу функцию потерь, лучше думать в меньших измерениях, таких как 2d. Если наша функция стоимости зависит только от двух входных данных, мы получим трехмерную карту для нашей функции стоимости. Итак, что нам нравится делать, так это пытаться найти точку минимума на такой математической карте.

Всегда лучше визуализировать, поэтому я добавил довольно популярный график затрат в ML. Во-первых, мы начинаем со случайной точки. Оттуда мы хотели бы достичь самого глубокого уровня, на который мы когда-либо могли бы пойти. Пока мы визуализируем график, очевидно, какой путь выбрать. Но, к сожалению, в математической модели это не так. Вы можете думать, что идете сквозь очень густой туман в лесу. Вы можете догадаться, какой путь может идти вверх или вниз. Но единственное, в чем вы можете быть уверены, так это в непосредственной близости от земли, которая вас окружает. Это становится экспоненциально сложнее, когда вы добавляете другие входные данные в функцию стоимости, что означает больше измерений. Итак, если мы не можем использовать нашу интуицию в такой модели, как мы будем действовать? Для этого у нас есть инструмент исчисления под названием градиент. Этот градиент нашей функции:

Градиент функции стоимости приведет к максимальному подъему на нашей математической карте в определенной точке. Теперь нам нужно только пойти в противоположном направлении. Делая это итеративно и делая небольшие шаги в направлении снижения, мы хотели бы найти минимальную стоимость. Но, как вы могли заметить, у этого метода есть 2 предостережения. Первый касается эффективности. Когда вы делаете свой шаг, он может быть слишком длинным, чтобы пройти самый крутой спуск, что приведет к большему количеству шагов, что означает большее время обработки. Если вы решите делать более мелкие шаги, вы всегда будете знать, куда лучше направить себя, но само количество вычислений на каждом шаге увеличит время обработки. Итак, есть один компромисс и нет явного победителя. Другой касается нашей цели метода. После того, как мы сошлись в точку, это означает, что сейчас мы находимся в таком месте, любое направление, в котором мы можем двигаться, будет более затратным. Но это не значит, что мы находимся на самом глубоком уровне. Самое печальное в этом то, что мы можем никогда не узнать, находимся ли мы на самом глубоком уровне или нет. Таким образом, даже если мы находимся в глобальном оптимуме, всегда будет скептик, если мы не докажем это математически. Из второго предостережения мы также можем вычесть, что разные начальные точки приведут к разным результатам, которые обычно показаны на этом графике:

Псевдокод градиентного спуска

Обратное распространение: оптимизация

оптимизация через градиентный спуск

Скорость обучения очень важна, поскольку она будет определять скорость сходимости, но если программист выберет слишком маленькую скорость, он сразу же застрянет на локальных минимумах. В сообществе до сих пор нет единогласного выбора скорости обучения. Один из способов — попробовать несколько скоростей обучения. Или программист может создать программу, которая может менять скорость обучения в зависимости от математического ландшафта. Мы называем эти типы скорости обучения адаптивной скоростью обучения. Вот некоторые из модулей скорости обучения в библиотеках Tensorflow:

1. Импульс 2. Адагард
3. Ададельта
4. Адам

5. RMSProp

Нейронная сеть на практике: мини-пакеты

Несмотря на то, что в концепции то, о чем говорилось в этой статье, довольно прямолинейно и легко для понимания, в конце концов, процесс требует больших вычислительных ресурсов. Одна из причин, по которой в наши дни эта область засияла, — возросшие вычислительные возможности. Но умный алгоритм для уменьшения потребности в вычислениях также дает серьезное преимущество. Одним из них является техника мини-замесов. Основная предпосылка этого алгоритма состоит в стохастическом вычислении градиента. Естественно, алгоритм называется Stochastic Gradient Descent. Но это очень шумное вычисление. Поскольку этот алгоритм слишком шумный, чтобы уменьшить этот шум, мы должны иметь пакетный и вычисляющий градиентный спуск. Псевдокод будет выглядеть так:

Это суммирует градиент набора точек данных и пытается оценить общее направление спуска. Этот алгоритм также позволяет нам параллельно вычислять необходимые вещи, что также экономит много времени.

Нейронная сеть: переоснащение

Я хотел бы объяснить здесь понятие шума, так как я не упоминал его раньше. Шум — это в основном все, что не должно быть в точке данных в нашей модели, но могло быть в собранных данных. Это может быть из-за ошибки измерения, вызванной наблюдателем, или даже из-за неопределенности на квантовом уровне, но в любом случае всегда будет шум. Но концепция шума — единственная причина, по которой мы не можем принимать решения на основе правил. Такой подход, основанный на правилах, называется запоминанием набора данных. Если мы не будем осторожны в нашей DNN, мы можем начать запоминать наш набор данных, а не изучать необходимые входные веса. Обратной стороной этого является то, что мы не сможем точно предсказать будущее. Чтобы обратиться к проблеме запоминания в других терминах переоснащения, мы используем концепцию, называемую регуляризацией. Регуляризация позволяет нам избежать сложности. Это также улучшает способность делать обобщение невидимых данных. Одним из самых популярных методов регуляризации является алгоритм отсева. Dropout в основном заставляет нейронную сеть использовать определенное количество узлов в нейронной сети, случайным образом устанавливая активацию некоторых узлов на ноль. Это означает, что этот узел не может

оптимизация через градиентный спуск
Формула 8: изменение весов

Θ ≺ Θ − 𝜂 𝜕𝐽(Θ)𝜕Θ

3. Вес возврата

где η — скорость обучения.

Скорость обучения очень важна, поскольку она будет определять скорость сходимости, но если программист выберет слишком маленькую скорость, он сразу же застрянет на локальных минимумах. В сообществе до сих пор нет единогласного выбора скорости обучения. Один из способов — попробовать несколько скоростей обучения. Или программист может создать программу, которая может менять скорость обучения в зависимости от математического ландшафта. Мы называем эти типы скорости обучения адаптивной скоростью обучения. Вот некоторые из модулей скорости обучения в библиотеках Tensorflow:

1. Импульс 2. Адагард
3. Ададельта
4. Адам

5. RMSProp

Нейронная сеть на практике: мини-пакеты

использоваться. Одним из преимуществ этого метода является то, что он заставляет сеть не полагаться на один узел или группу узлов, а также пытаться найти другое соединение. [10]

Если вы хотите лучше понять, почему мы это делаем, потому что мы можем наблюдать, что мы не можем правильно предсказать. Чтобы доказать это, мы разделили наши данные на две группы, названные Test и Training group. Обычно мы используем 80% собранных данных для обучения и 20% для тестирования. Существуют также такие методы, как перекрестное группирование, чтобы иметь несколько групп тестирования и обучения. Если бы мы вычисляли функцию потерь в разных группах, мы всегда видели бы что-то вроде этого графика.

Обратите внимание на увеличение потерь в тестовом наборе (синий). Это вызвано запоминанием шума. Он пытается предсказать модель с помощью шума, а поскольку шумы непредсказуемы и случайны, это помешает вашей предсказуемости. Так что в лучшем случае прекратить обучение через некоторое время. Чтобы получить наилучший результат, мы должны остановить обучение нашей модели на четвертой итерации по этому примеру. Но предсказать, где остановиться, на удивление сложно. Так что я не буду вдаваться в это прямо сейчас.

В. Обзор основного фонда

Нейронные сети и их приложения состоят из трех основных блоков.

VI. Заключение

Работая над этой статьей, я пришел к выводу, что глубокая нейронная сеть станет одним из самых важных алгоритмов в ближайшие десятилетия. Это может дать представление о том, как люди выносят суждения и распознают закономерности. Есть много его приложений во многих областях. Но наиболее перспективным является распознавание зрения. Распознавание зрения очень важно, поскольку оно позволит алгоритму общего назначения процветать. Когда у нас есть инструменты общего назначения, мы можем развивать их дальше. Это может закончиться, а может и не закончиться ИИ общего назначения. Но это, безусловно, один из лучших кандидатов.

Благодарность

Дога Пойраз ТАХАН учится в Университете MEF на факультете промышленной инженерии. Он провел это исследование в качестве отчета по курсу «Информационные системы», которым руководит доктор Семра Аграли. Общие замечания в этой статье взяты из курсовой лекции Эндрю Нг и Александра Амини «Введение в машинное обучение в Массачусетском технологическом институте».

Ссылки
[1]
«Разведка». Мерриам-Вебстер, Мерриам-Вебстер,

www.merriam-webster.com/dictionary/intelligence.

[2] «Введение в машинное обучение», MIT Publications, Türkçe — İngilizce Sözlük Ek B, Ethem Alpaydınhttps://www.cmpe.boun.edu.tr/~ethem/i2ml2e_tr/i2tr_sozluk.p df

[3] Имиджнет. Крупномасштабный конкурс визуального распознавания ImageNet (ILSVRC), www.image-net.org/.

[4] Себастьян Рудер. «Настал момент ImageNet для НЛП». Себастьян Рудер, Себастьян Рудер, 24 октября 2018 г., ruder.io/nlp-imagenet/.

[5] «Глубокое обучение в нейронных сетях: обзор». NeuroImage, Academic Press, 13 октября 2014 г., www.sciencedirect.com/science/article/pii/S089360801400213 5.

[6] SVG в SVG.svg Это векторное изображение включает элементы, которые были взяты или адаптированы из этого: Error function.svg Error function.svg (от Geek3 Wikipedia).

[7] «Нейронные сети. — Скачать Ppt Video Online». SlidePlayer, SlidePlayer, slideplayer.com/slide/4910533/.

[8] Нильсен и Майкл А. «Нейронные сети и глубокое обучение». Нейронные сети и глубокое обучение, пресса определения, 1 января 1970 г., neuronetworksanddeeplearning.com/chap5.html.

[9] «Глубокое обучение в нейронных сетях: обзор». NeuroImage, Academic Press, 13 октября 2014 г., www.sciencedirect.com/science/article/pii/S08936080140021 35.

[10] «Отсев: простой способ предотвратить переобучение нейронных сетей» Нитиш Сривастава, Джеффри Хинтон, Алекс Крижевский, Илья Суцкевер, Руслан Салахутдинов Журнал исследований машинного обучения 15 (2014) 1929–1958, https://www.jmlr.org /papers/volume15/srivastava14a/srivastav a14a.pdf?utm_content=buffer79b43&utm_medium=social&ut m_source=twitter.com&utm_campaign=buffer