Нейросети, часть 2!

Итак, самое начало тут.


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


Как мы обучаемся?

Итак, я - нейросеть. Совсем простая нейросеть. А значит, я могу выполнять простые задачи, которые заключаются в том, что мне дают числа, а я думаю, что с ними делать. Сегодня я буду по всяким разным параметрам предсказывать, будет ли дождь.


Как я выгляжу, и по каким данным я предсказываю?

Пусть будет такая архитектура:

Нейросети, часть 2! Нейронные сети, Перцептрон, Обратное распространение ошибк, Машинное обучение, Длиннопост

Каждый вход теперь будет от 0 до 1. Например, если 0.5 на первом нейроне - это означает, что трава не очень мокрая, а вот если 1 на предпоследнем нейроне - значит 100% я люблю печеньки. Итак, соединение между нейронами - синапс  - имеет вес, число от -1 до 1. -1 - значит мы знаем, что он всегда лжет. 0 - означает, что мы никогда не знаем, врет или говорит правду. 1 - полностью верим.

Все веса обычно задаются случайными небольшими величинами, пусть это будут 0.1, 0.2, -0.3, 0.1, 0.2.


Школ-то нету, где мне учиться?


Школ нету, зато есть учитель.

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


Наш первый пример выглядит таким образом:

Трава: 1

Лоб: 0

Серая: 1

Печеньки: 0.3

Солнце: 0


Посчитаем "вероятность" (почему в кавычках, поймем позже) дождя: 0.1 * 1 + 0.2 * 0 - 0.3 * 1 + 0.1 * 0.3 + 0.2 * 0 = -0.17 < 0.5, то есть дождя не будет. Однако нам (и датасету, то есть нашему "учителю") очевидно, что при мокрой траве и серой погоде будет дождь, то есть правильный ответ 1. То есть мы ошиблись на 1 - (-0.17) = 1.17. Далее могут быть детали, но будет скучно нам, правильно? Так что все должно быть просто. Мы поняли, что стоит больше доверять нейронам "трава" и "серая", увеличив их веса, чуть меньше доверяем "печеньки". К "Лоб" и "солнце" доверие чуток падает. В соответствии с тем, насколько мы больше (меньше) стали доверять каждому нейрону, мы увеличили (уменьшили) их веса. Таким образом формируется правильная матрица весов.


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


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

Нейросети, часть 2! Нейронные сети, Перцептрон, Обратное распространение ошибк, Машинное обучение, Длиннопост

А про структуры разных сетей, как отличить кота от собаки, и как сделать нейросеть, которая ведет за вас канал на youtube - в следующих сериях :).

Вы смотрите срез комментариев. Показать все
1
Автор поста оценил этот комментарий
Здравствуйте. Ваша работа связана с нейросетями? Если да, опишите, пожалуйста, ваш рабочий процесс поподробней. В каком виде вам приходят данные, как вы подбираете архитектуру и т.д.
раскрыть ветку (2)
2
DELETED
Автор поста оценил этот комментарий

Да, хорошо, будет)

раскрыть ветку (1)
Автор поста оценил этот комментарий
Заранее спасибо.
Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку