Найти тему
Костя Шор

Нейросети

Оглавление

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

Суть работы Нейросетей.

Существует множество видов нейросетей одна из них называется многослойный перцептрон. Пожалуй, самый удобный для понимания сути работы нейросетей.

Рис.1 Одна из разновидностей нейронных сетей
Рис.1 Одна из разновидностей нейронных сетей

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

  1. Первый слой - Входящий слой. Его задача выплывает из названия, он нужен чтобы принимать данные.
  2. Следующие слои называют Скрытыми слоями. Их количество не ограничивается, оно зависит от целей и задач нейросети. Эти слои предназначены для нахождения специальных признаков и для осуществления математической части. Чем сложней задача тем больше слоёв "отсеивания" . После всех этих действий оставшиеся значения переходят в последний слой.
  3. Последний слой - Выходной слой. Тот нейрон, выходного слоя, в которым окажется значение большее всех остальных, и считается ответом.

Задача нейрона во втором слое искать специальные признаки. Места на изображение, где присутствуют определённые пиксели. Например часть какой-то цифры. Этому месту, где присутствует часть цифры, задают завышенный коэффициент, а для области, где нету части цифры, присваивают заниженный коэффициент. Исторически сложилось, что эти коэффициенты называют весами и обозначать буквой латинского алфавита w. Когда в нейрон приходит какое-то количество значения, для того ,чтобы он прошел дальше , он должен перевесит "пороговое" значение. В другом случае нейрон выпадет и дальше ничего не передаёт.

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

Несмотря на все выше перечисленные факторы на картинке или предмете получения данных может быть "шум". Для его "сглаживания" используют Bios. Его ещё называют коэффициентом смещения . Итоговая формула имеет вид :

Рис.2 Функция активации нейросети
Рис.2 Функция активации нейросети

Алгоритм обратного распространения ошибки

Искусственная нейронная сеть обучается и её обученность хранится в весах связи(w). То есть начальное значение весов мы должны откорректировать в соответствие с обучением. При обучение используется алгоритм градиентного спуска. Он, в свою очередь, требует использование разных весов для разных связей, поэтому выбирают в качестве весов случайные числа от -0,5 до 0,5. В итоге, при обучение, мы подаём обучающий предмет и получаем по алгоритму ответ сети. Так как мы используем обучение с учителем, то для текущего обучающего примера у нас есть правильный ответ, эталон. Благодаря которому мы можем посчитать ошибку, разницу с эталоном. Ошибка распространяется на предыдущие нейроны по тем же самым связям, как и проходил сигнал, только в обратном направлении. После нахождения всех ошибок нейронов скрытых слоёв - корректируются веса входных связей. Пересчитав все веса связи нейронной сети - сеть является обученной на данном примере. После чего подаётся следующий обучающий пример и цикл повторяется . С каждым разом нейронная сеть становится всё точнее, пока не дойдёт до локального минимума ошибки. В отличие от простого перцептрона, сеть корректирует веса как при правильном так и при неправильном ответе.

Виды нейронных сетей

Базовые архитектуры:

1. Нейронные сети прямого распространения и перцептроны :

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

Рис. 3 Нейронные сети прямого распространения
Рис. 3 Нейронные сети прямого распространения

2. Сети радиально-базисных функций:

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

Рис.4 Радиально базисные сети
Рис.4 Радиально базисные сети

3. Нейронная сеть Хопфилда:

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

Рис.5 Нейронная сеть Хопфилда
Рис.5 Нейронная сеть Хопфилда

4. Машина Больцмана:

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

Рис.6 Машина Больцмана
Рис.6 Машина Больцмана

5. Автокодировщик:

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

Рис.7 Автокодировщик
Рис.7 Автокодировщик

6.Разреженный автокодировщик:

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

Рис.8 Разреженный автокодировщик
Рис.8 Разреженный автокодировщик

7. Вариационный автокодировщик:

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

Рис. 9 Вариационный автокодировщик
Рис. 9 Вариационный автокодировщик

8. Шумоподавляющий автокодировщик

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

Рис.10 Шумоподавляющий автокодировщик
Рис.10 Шумоподавляющий автокодировщик

9. Сеть типа "deep belief":

Если переводить с английского, дословно, то эта нейросеть называется глубокое доверие. Она была так названа потому, что сеть состоит из смеси ограниченных Машин Больцмана и вариационного автокодировщика. Обучаемость происходит по блокам, причём всё что требуется от каждого блока - это уметь закодировать предыдущий. Эта техника получила название "Жадного обучения", суть которого состоит в выборе локально оптимальных решений.

Рис.11 Deep Belief
Рис.11 Deep Belief

10. Свёрточные нейронные сети:

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

Рис.12 Свёрточная нейронная сеть
Рис.12 Свёрточная нейронная сеть

11. Развёртывающие нейронные сети(обратные графические сети):

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

Рис.13 Развёртывающая нейронная сеть
Рис.13 Развёртывающая нейронная сеть

Наука
7 млн интересуются