Глубокое Обучение: Как Это Работает? Часть 1



В этой статье вы узнаете -В чем суть глубокого обучения? -Для чего используются функции активации? -Что такое ФКНН -Какие проблемы может решить FCNN? -Каковы недостатки FCNN и как с ними бороться



Краткое введение

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

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



В чем вообще суть глубокого обучения?

Суть в том, чтобы построить некий алгоритм, который бы принимал на вход X и предсказывал Y. Если мы напишем алгоритм Евклида для поиска НОД, то мы будем просто писать циклы, условия, присваивания и все — мы знаем, как построить такой алгоритм.

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



Более формально и немного о функциях активации

Формально говоря, мы хотим построить функцию из функции из функции.

из входного параметра X и весов нашей сети W, что дало бы нам определенный результат. Здесь важно отметить, что мы не можем просто взять много линейных функций, потому что суперпозиция линейных функций – линейная функция.

Тогда любая глубокая сеть аналогична сети с двумя слоями (входным и выходным).

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

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



Полносвязные нейронные сети (FCNN)

Просто полносвязная нейронная сеть.

Это выглядит примерно так:

Глубокое обучение: как это работает? Часть 1

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

Первый слой — это входной слой.

Например, если мы хотим подать на вход такой сети изображение размером 256x256x3, то нам понадобится ровно 256x256x3 нейронов во входном слое (каждый нейрон будет занимать 1 компонент (R, G или B) пикселя).

Если мы хотим предоставить рост человека, его вес и еще 23 характеристики, то нам понадобится 25 нейронов во входном слое.

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

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

здесь .



Какие проблемы может решить FCNN?

-Проблема регрессии .

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

Например, классической является классификация MNIST. -По поводу задачи сегментации и обнаружения объектов с помощью FCNN ничего сказать не могу.

Может кто-нибудь поделится в комментариях :)

Недостатки FCNN

  1. Нейроны одного слоя не имеют «общей» информации (все веса в сети уникальны).

  2. Огромное количество обучаемых параметров (весов), если мы хотим обучать сеть на фотографиях.

Что делать с этими недостатками? Сверточные нейронные сети (CNN) — это верно.

Об этом будет моя следующая статья.



Заключение

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

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

Теги: #Машинное обучение #глубокое обучение #компьютерное зрение

Вместе с данным постом часто просматривают: