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

Мы разберем, что они из себя представляют и что они делают, и мы узнаем это ТОЧНО. По сути, мы собираемся вручную писать математические вычисления для нейронной сети, пока не поймем, что происходит, и позволим компьютеру сделать все остальное.

Кто они такие?

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

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

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

В игре также есть несколько других игроков, где первый игрок делает свои шаги, передает подсказки и свои шаги новой группе игроков, которая выполняет свою собственную версию шагов, чтобы попытаться добраться до спрятанного предмета. И каждый раз человек, отвечающий за игру, говорит: «Извините, что вы так сильно ошиблись, так что вернитесь назад и измените свои шаги». Таким образом, игроки приспосабливаются и пытаются снова и снова, продвигаясь вперед со своими догадками / шагами и назад, внося коррективы, пока они не приблизятся достаточно близко и игровой раннер не скажет: «Вы нашли предмет!»

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

Секрет счастья

Допустим, мы ищем формулу счастья.

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

Наша машина попытается предсказать, будет ли человек счастлив, и данные будут поступать от Алехандры, Боба и Алисы.

Мы собираемся сказать, что есть 4 вещи, 4 характеристики, определяющие счастье. Деньги, отношения, бутерброды и базовое счастье. Деньги - это деньги, отношения могут быть такими вещами, как качество отношений с друзьями и семьей (не обязательно, сколько у вас их есть), а бутерброды могут быть такими вещами, как хороший BLT или плавленый тунец. А базовый уровень, который мы просто скажем, - это то, насколько человек счастлив просто от того, что он рядом.

Это глупо, но вопрос в том, как мы оцениваем каждую функцию? Я имею в виду, насколько важны деньги? Насколько важны отношения? И насколько важными должны быть бутерброды? И насколько большой должна быть базовая линия?

Итак, эти веса - это то, что нам действительно нужно. Итак, приступим к расчетам.

Определение веса

Давайте использовать произвольный набор оценок счастья. Предположим, нам сказали, что счастье Алехандры - 130 (и предположим, что счастье большинства людей - 80, так что у Алехандры все отлично), ее денежный счет - 40, ее отношения - 80, а ее бутерброды - 40. И базовый уровень - 20.

Какие веса нам нужны, чтобы подарить Алехандре счастье, чтобы ее совокупные оценки достигли 130? В данном случае это действительно очень просто. Мы могли бы сказать, что MoneyWeight = 0,5, RelationshipWeight = 1 и SandwichWeight = 0,25, BaselineWeight = 1.

Тогда наша формула могла бы сказать:

Счастье Алехандры = (Деньги * Вес денег) + (Отношения * Вес отношений) + (Бутерброды * Вес бутербродов) + (Базовый уровень * Базовый вес)

И когда мы подставляем счастье Алехандры и соответствующие ценности, мы получаем

130 = (40 * 0.5) + (80 * 1) + (40 * 0.25) + (20 * 1)

130 = 20 + 80 + 10 + 20

И, как мы видим, это складывается!

Итак, у нас есть набор весов [0,5, 1, 0,25, 1,0] для [MoneyWeight, RelationshipWeight, SandwichesWeight, BaselineWeight], который работает для Алехандры.

Далее, предположим, что у Боба счастье 60. Значит, он немного ниже среднего. Его деньги = 100, его отношения = 20, его бутерброды = 40, а его исходный уровень = 20.

Что бы произошло, если бы мы использовали наши текущие веса [0,5, 1, 0,25, 1,0] для Боба?

Снова мы начинаем со счастья Боба = (Деньги * MoneyWeight) + (Relationships * RelationshipWeight) + (Sandwiches * SandwichesWeight) + (Baseline * BaselineWeight)

85 = (100 * 0.5) + (20 * 1) + (40 * 0.25) + (20 * 1.0)

85 = 50 + 20 + 10 +20

85 = 100

Это не правильно! Придется скорректировать вес. Но когда мы это делаем, нам нужно убедиться, что это работает как для Алехандры, так и для Боба.

Так что, возможно, мы сделаем бутерброды стоимостью 0,25 вместо 0,5, поскольку у Боба намного больше денег, но он гораздо менее счастлив, чем Алехандра. И, возможно, мы сделаем наш базовый уровень выше, около 30.

Посмотрим, работает ли это для Алехандры.

130 = (40 * 0.25) + (80 * 1) + (40 * 0.25) + (30 * 1)

130 = 10 + 80 + 10 + 30

Пока для Алехандры все хорошо. Теперь о Бобе.

85 = (100 * 0.25) + (20 * 1) + (40 * 0.25) + (30 * 1)

85 = 25 + 20 + 10 + 30

Это работает!

Круто, поэтому наши обновленные веса [0,25, 1, 0,25, 1] ​​для [Деньги, Отношения, Бутерброды, Базовое Счастье]. Эти веса подходят как Бобу, так и Алехандре.

Но теперь у нас есть возможность подумать об Алисе! Боже мой, значит ли это, что нам снова придется перетасовать вещи, чтобы поправить вес? Оно делает. И представьте, что вы делаете это для 100 человек, для 1000 человек, для миллиона человек!

Здесь на помощь приходят наши компьютеры и наши уловки глубокого обучения. Тогда мы сможем делать это систематически. Итак, во второй части мы настроим вещи так, чтобы они работали с использованием метода машинного обучения.

(Кстати, те, у кого есть опыт в машинном обучении и линейной алгебре, могут знать, что есть что-то, называемое смещением, которое также может быть добавлено к этим вычислениям. Это похоже на функцию, которая не умножается на вес, но все равно складывается. Для простоты наше смещение будет равно 0, так что нам не нужно об этом беспокоиться.)

Далее мы узнаем, как сделать то же самое вычисление счастья более организованным способом с помощью матриц! Переходите к части 2: вход в матрицу машинного обучения.

Первоначально опубликовано на https://www.blueshiftdevelopment.com 4 сентября 2019 г. Ознакомьтесь с частью 1, частью 2, частью 3, частью 4, частью 5, Часть 6, часть 7, часть 8, часть 9.