Руководство по Deep Learning и нейронным сетям

Как подмножество искусственного интеллекта, deep learning лежит в основе различных инноваций: самодвижущихся автомобилей, обработки естественного языка, распознавания изображений и так далее. Компании, предоставляющие DL-решения (такие как Amazon, Tesla, Salesforce), занимают лидирующие позиции на фондовых рынках и привлекают внушительные инвестиции. По данным Statista, общий объем финансирования компаний-стартапов в области искусственного интеллекта по всему миру в 2014-2019 годах равен более $26 млрд. Такой высокий интерес можно объяснить удивительными преимуществами глубокого обучения и его архитектуры – искусственных нейронных сетей.

Что такое deep learning?

Deep learning (Глубокое обучение) – это один из разделов машинного обучения, который использует алгоритмы глубокого обучения для неявного получения важных выводов на основе входных данных.

Обычно deep learning является несамостоятельным или полусамостоятельным. Deep learning основано на обучении представлений. Вместо того чтобы использовать алгоритмы, специфичные для конкретной задачи, оно учится на репрезентативных примерах. Например, если вы хотите построить модель, распознающую кошек по видам, вам нужно подготовить базу данных, включающую множество различных изображений кошек.

Основными архитектурами глубокого обучения являются:

  • Конволюционные нейронные сети
  • Рекуррентные нейронные сети
  • Генеративные состязательные сети
  • Рекуррентные нейронные сети

Более подробно мы поговорим о них позже в этом тексте.

Разница между machine learning и deep learning

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

Однако глубокое обучение немного отличается:

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

Преимущества deep learning

Теперь, когда вы знаете, в чем разница между DL и ML, давайте рассмотрим некоторые преимущества глубокого обучения.

  • В 2015 году группа инженеров Google проводила исследование того, как нейронные сети выполняют задачи классификации . Случайно они также заметили, что нейронные сети могут галлюцинировать и создавать довольно интересные арты .
  • Способность выявлять закономерности и аномалии в больших объемах необработанных данных позволяет глубокому обучению эффективно предоставлять точные и надежные результаты анализа профессионалам. Например, у Amazon более 560 миллионов товаров на сайте и более 300 миллионов пользователей . Ни один бухгалтер-человек или даже целая армия бухгалтеров не смогли бы отслеживать такое количество транзакций без инструмента ИИ.
  • Deep learning не так сильно зависит от человеческого опыта, как традиционное машинное обучение. DL позволяет нам делать открытия в данных, даже когда разработчики не уверены, что они пытаются найти. Например, вы хотите, чтобы ваши алгоритмы могли прогнозировать удержание клиентов , но вы не уверены, какие характеристики клиента позволят системе сделать этот прогноз.

    Проблемы deep learning

    • Для сбора больших объемов качественных данных требуется много ресурсов. В течение многих лет самой большой и лучше всего подготовленной коллекцией образцов был ImageNet с 14 миллионами различных изображений и более чем 20 000 категорий. Он был основан в 2012 году, и только в прошлом году Tencent выпустила более крупную и универсальную базу данных .
    • Еще одна трудность с технологией глубокого обучения заключается в том, что она не может обосновать свои выводы. Поэтому трудно оценить производительность модели, если вы не знаете, каким должен быть результат. В отличие от традиционного машинного обучения, вы не сможете протестировать алгоритм и выяснить, почему ваша система решила, что, например, на картинке кошка, а не собака.
    • Создание алгоритмов глубокого обучения обходится очень дорого. Это невозможно без квалифицированного персонала, обученного работе со сложной математикой. Кроме того, глубокое обучение является ресурсоемкой технологией. Для обучения моделей требуются мощные графические процессоры и много памяти. Требуется много памяти для хранения входных данных, весовых параметров и функций активации по мере распространения входных данных по сети. Иногда алгоритмы глубокого обучения становятся настолько энергоемкими, что исследователи предпочитают использовать другие алгоритмы , даже жертвуя точностью прогнозов.

    Однако во многих случаях глубокое обучение не может быть заменено.

    Как вы можете применить DL и NN к реальным задачам?

    Сегодня глубокое обучение применяется в разных отраслях для различных вариантов использования:

    • Распознавание речи. Все основные коммерческие системы распознавания речи (такие как Microsoft Cortana, Alexa, Google Assistant, Apple Siri) основаны на глубоком обучении.
    • Распознавание образов. Системы распознавания образов уже способны давать более точные результаты, чем человеческий глаз в медицинской диагностике .
    • Обработка естественного языка. Нейронные сети используются для реализации языковых моделей с начала 2000-х годов. Изобретение LSTM помогло улучшить машинный перевод и языковое моделирование.
    • Открытие новых лекарств. Например, нейронная сеть AtomNet использовалась для предсказания новых биомолекул, которые потенциально могут вылечить такие заболевания, как лихорадка Эбола и рассеянный склероз.
    • Рекомендательные системы. Сегодня глубокое обучение используется для изучения предпочтений пользователей во многих областях. Netflix — один из ярких примеров в этой области.

    Что такое искусственные нейронные сети?

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

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

    Определение ИНС

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

    ИНС может иметь миллионы нейронов, связанных в одну систему, что делает ее чрезвычайно успешной при анализе и даже запоминании различной информации.

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

    Компоненты нейронных сетей

    Существуют разные типы нейронных сетей, но они всегда состоят из одних и тех же компонентов: нейронов, синапсов, весов, смещений и функций.

    нейроны

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

    Все нейроны в сети делятся на три группы:

    • Входные нейроны, получающие информацию из внешнего мира;
    • Скрытые нейроны, обрабатывающие эту информацию;
    • Выходные нейроны, производящие вывод.

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

    Нейроны работают только с числами в диапазоне [0,1] или [-1,1]. Чтобы превратить данные во что-то, с чем может работать нейрон, нам нужна нормализация. О том, что это такое, мы говорили в статье о регрессионном анализе .

    Подождите, а как нейроны общаются? Через синапсы.

    Синапсы и веса

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

    Как узнать, какой нейрон имеет наибольший вес? При инициализации (первом запуске НС) веса назначаются случайным образом, но потом их придется оптимизировать.

    Предвзятость

    Нейрон смещения позволяет хранить больше вариантов весов. Смещения добавляют более богатое представление входного пространства к весам модели.

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

    Это правда, что ИНС могут работать без нейронов смещения. Однако они почти всегда добавляются и считаются неотъемлемой частью общей модели.

    Как работают искусственные нейронные сети

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

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

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

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

    Как вы обучаете алгоритм?

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

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

    Итерация

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

    Эпоха

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

    Партия

    Размер пакета равен количеству обучающих примеров в одном прямом/обратном проходе. Чем больше размер пакета, тем больше памяти вам потребуется.

    В чем разница между итерацией и эпохой?

    • одна эпоха — это один проход вперед и один проход назад всех обучающих примеров;
    • количество итераций — это количество проходов, каждый проход использует [размер партии] количество примеров. Чтобы было ясно, один проход равен одному проходу вперед + одному проходу назад (мы не считаем проход вперед и проход назад двумя разными проходами).

    А как быть с ошибками?

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

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

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

    • С Arctan ошибка почти всегда будет больше.

    $\frac{arctan^2(i_1-a_1)+…+arctan^2(i_n-a_n)}{n}$

    • MSE более сбалансирован и используется чаще.

    $\frac{(i_1-a_1)^2+(i_2-a_2)^2+…+(i_n-a_n)^2}{n}$

    Какие виды нейронных сетей существуют?

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

    Нейронные сети с прямой связью

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

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

    Рекуррентные нейронные сети

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

    Рекуррентные нейронные сети широко используются в обработке естественного языка и распознавании речи.

    Сверточные нейронные сети

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

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

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

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

    Для отличного объяснения того, как работают сверточные нейронные сети, посмотрите это видео Луиса Серрано.

    Генеративно-состязательные нейронные сети

    Генеративно-состязательная сеть — это неконтролируемый алгоритм машинного обучения, представляющий собой комбинацию двух нейронных сетей, одна из которых (сеть G) генерирует шаблоны, а другая (сеть A) пытается отличить подлинные образцы от поддельных. Поскольку у сетей противоположные цели — создавать образцы и отбраковывать образцы, — они начинают антагонистическую игру, которая оказывается весьма эффективной.

    GAN используются, например, для создания фотографий, которые воспринимаются человеческим глазом как естественные изображения или дипфейки (видео, где реальные люди говорят и делают то, чего никогда не делали в реальной жизни).

    Какие проблемы решают нейронные сети?

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

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

    Резюме

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

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

    Exit mobile version