Pull to refresh

Deep Learning: как это работает? Часть 1

Reading time3 min
Views15K

В этой статье вы узнаете



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

-Для чего нужны функции активации

-Что такое FCNN

-Какие задачи может решать FCNN

-Каковы недостатки FCNN и с помощью чего с ними бороться


Небольшое вступление


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

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

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


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

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


Выражаясь формально, мы хотим построить функцию от функции от функции…от входного параметра X и весов нашей сети W, которая выдавала бы нам некий результат. Тут важно отметить, что мы не можем взять просто много линейных функций, т.к. суперпозиция линейных функций — линейная функция. Тогда любая глубокая сеть аналогична сети с двумя слоями (входом и выходом). Для чего нам нелинейность? Наши параметры, которые мы хотим научиться предсказывать, могут нелинейно зависеть от входных данных. Нелинейность достигается путем использования различных функций активаций на каждом слое.

Fully-connected neural networks(FCNN)


Просто полносвязная нейронная сеть. Выглядит как-то так:

image

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

Первый слой — входной. Например, если мы хотим подать изображение 256x256x3 на вход такой сети, то ровно 256x256x3 нейронов во входном слое нам и понадобится (каждый нейрон будет принимать 1 компоненту (R, G или B) пикселя). Если хотим подать рост человека, его вес и еще 23 признака, то понадобится 25 нейронов во входном слое. Кол-во нейронов на выходе — кол-во признаков, которые мы хотим предсказать. Это может быть как 1 признак, так и все 100. В общем случае по выходному слою сети можно почти наверняка сказать — какую задачу она решает.

Каждая связь между нейронами — вес, который тренируется алгоритмом backpropagation, о котором я писал тут.

Какие задачи может решать FCNN


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

-Задача классификации. Например, классика — MNIST classification.

-Насчет задачи сегментации и обнаружения объектов с помощью FCNN я сказать не возьмусь. Быть может, кто-то поделится в комментариях :)

Недостатки FCNN


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

Что делать с этими недостатками? Convolutional Neural Networks(CNN) — все верно. Об этом и будет моя следующая статья.

Заключение


Особо долго останавливаться на полносвязных нейронных сетях я не вижу особого смысла. Если кому интересна сама реализация таких сетей, то вот тут можно посмотреть и почитать о моей реализации.
Tags:
Hubs:
Total votes 17: ↑10 and ↓7+3
Comments3

Articles