Русский
Русский
English
Статистика
Реклама

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

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



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

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

-Что такое 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) все верно. Об этом и будет моя следующая статья.

Заключение


Особо долго останавливаться на полносвязных нейронных сетях я не вижу особого смысла. Если кому интересна сама реализация таких сетей, то вот тут можно посмотреть и почитать о моей реализации.
Источник: habr.com
К списку статей
Опубликовано: 14.07.2020 00:07:34
0

Сейчас читают

Комментариев (0)
Имя
Электронная почта

Машинное обучение

Глубокое обучение

Компьютерное зрение

Категории

Последние комментарии

© 2006-2020, personeltest.ru