НОВОСТИ Как устроена нейросеть

Alvaros
Онлайн
Регистрация
14.05.16
Сообщения
21.452
Реакции
101
Репутация
204
Всем привет! Меня зовут , я фуллстек-разработчик в компании БКС. Недавно я самостоятельно изучал нейросети и по итогам . Ниже я расскажу как устроена простейшая нейросеть.

pymsdvfkvwrnlukoq4rmvssl074.jpeg


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

При этом вы потыкались в обучающие статьи. Всё было непонятно. С первых же страниц начали грузить интегралами и градиентными спусками. Вы решили пойти на курсы. Там ещё хуже. Курс занимал 4-12 месяцев. А стоил как крыло самолета: 100-200 тыс руб. Ну, небольшое такое крыло. Да и мотивация ниже плинтуса без волшебных пинков от учителя.

Всё что вы хотели — получить , но для нейросетей. То бишь простейшее приложение демонстрирующее основные принципы работы. Вуаля! Вы на верном пути!

Немного теории. Нейросеть — это .

Но в отличие от Монте-Кристо у него есть входной S-слой (сенсорный). Туда мы подаем числа в промежутке [0..1]. Например, картинка с котиком. Берём каждую точку, преобразуем в градации серого и записываем во входной узел по правилу, где 0 — белый цвет, а чем ближе к 1, тем более тёмные мысли у нашей точки.

Далее промежуточные — A-ассоциативные слои. Они также содержат значения [0..1]. Они соединяются ребрами с предыдущими и последующими слоями. Веса рёбер находятся в пределах [0..1], задаваемые произвольно. Значение узла А-слоя — это сумма его входящих рёбер умноженных на связанные узлы предыдущего слоя. Полученная сумма может получиться больше 1, поэтому её «нормализуют», чтобы она попала в интервал [0..1]. Для этого используют .

Наконец, последний, или как сказали бы моряки, «крайний» — R-реагирующий слой. Правила подсчёта у него такие же, как и для А-слоев.

Получился вот такой парень, а точнее, :

l3x0vpaiv808fhpya6qrrxlzlme.png


Итак. Мы подаем на вход нейросети циферки. Далее от входа до выхода просчитываем значения с учетом поданных сигналов на узлы, веса рёбер и функции активации слоев. На выходе получаем значения. Допустим, у нас 1 выходной узел и его значение 0.5. А мы бы хотели, чтобы его значение было 1. Потому что мы условились, что 1 на узле означает, что на фото кошка. Как же изменить веса рёбер, чтобы на выходе получить 1?

Для этого используется особо сильное колдунство — . Смысл в том, чтобы справа налево (от R-слоев к S-слоям) поменять веса рёбер так, чтобы на выходе получить нужные значения. Если проделать так много раз для разных картинок, то постепенно, нейросеть «научится» распознавать тот образ, который мы хотим. Подробнее и оригинальную статью . Кстати, картинку с примером реализации на вики выложил тоже я.

Вот, кстати, и она:
wlpjlpjecmrlc5gsgl41lgegrzo.png


Ну и, в принципе, всё! Можете считать себя Junior Data Science и на зарплату, меньшую чем 300 тыс руб не соглашайтесь! Конечно, есть ещё много вещей, которые полезно знать:

  1. Надо ли каждый раз писать с нуля такой граф? Конечно, нет! Есть множество библиотек, помогающих создать нейросеть в 1 клик: , , , Выберите исходя из функционала, популярности и знакомого языка программирования.
  2. Где брать датасеты для нейросетей? Ну, поищите их на , , , соберите сами, в конце концов! Подсказка — смартфон собирает тучи данных о вас через мобильные приложения, включённый микрофон и GPS-сенсор.
  3. Как обрабатывать входные данные для нейросети? Да как угодно! На любом языке программирования — C#, Java, Javascript… Особо упоротые используют .
  4. Как подобрать архитектуру графа — число слоёв, узлов, ребер, функции активации и ошибки, библиотеку для обработки? Арргх! В этом и работа датасаенса!
  5. Я сделаю ИИ-приложение и инвесторы дадут мне 100 лямов, заберут в долину, позвонит Цукерберг? Лол, нет! Нейросети — лишь инструмент для определенного класса задач. Решайте , а не как в прошлый раз. Совсем огонь если .

Что же насчет обещанного HelloWorld? Их есть у меня!


Ну и, пожалуй, хватит. Ещё больше примеров . А в гугле вообще завались!
 
Сверху Снизу