Глава 3. В чем сила, Розенблатт?
В прошлой части, мы поговорили о том, что искусственному интеллекту, как и любому ребенку, необходим учитель.
Ребенку новые знания мы вкладываем в мозги, как бы топорно это не звучало, но это так. Процесс обучения у любого человека проходит просто: мозг анализирует информацию и подает электрические импульсы на определенные области человеческого мозга (и не только человеческого), после чего пытается повторить определенные действия, но уже с другими входными данными и, если получает одобрение со стороны учителя, закрепляет "направления" этих электронных импульсов. Так, максимально простыми словами, устроен процесс запоминания у любого живого существа.
Но как быть с компьютером? Конечно, у него тоже есть мозги, но их строение немного отличается от строения биологического мозга, верно?
Дядя Фрэнк Розенблатт дал на это интересный ответ. Он изобрел свою "модель мозга для ИИ", которую назвал перцептрон.
Перцептро́н, или персептрон — математическая или компьютерная модель восприятия информации мозгом, предложенная Фрэнком Розенблаттом в 1957 году.
Каким образом он работает? Все просто. Есть нейрон, на изображении он представляет собой квадрат, есть входные данные, или инпуты, круги. Инпуты подают нейрону на обработку определенные значения. Этими значениями может быть что угодно: погода, возраст или пол человека, интенсивность освещения и так далее. У каждого параметра есть свой, так называемый, вес. Вес - это некий приоритет параметра. Чем больше его вес, тем сильнее он может повлиять на результат обработки.
Например: вас позвали на вечеринку; вы думаете: пойти на нее или нет, начиная думать, вы активизируете определенные нейроны и начинаете принимать инпуты. Предположим, у вас есть три фактора, которыми вы руководствуетесь при принятии решения.
1. Знаете ли вы кого-нибудь на этой вечеринке?
2. Хорошая ли погода?
3. Хорошее ли у вас настроение?
Эти три фактора мы будем называть инпутами. Вот как в примитивном виде будет выглядеть ваш нейрон, принимающий решение.
И так, у вас есть три инпута, которыми ваш нейрон руководствуется при принятии решения. Теперь, давайте разберемся с приоритетами этих параметров, весами. Вес принято исчислять в интервале от 0 до 1, где 1 - максимальный приоритет, а 0 - совершенно не имеет значения. Но важно понимать, что 0 и 1 не включается в этот интервал, потому что если значение веса какого-либо параметра будет равно 1, то необходимость в других инпутах полностью пропадает, потому что если значение такого инпута равняется 1 - то вы точно пойдете на вечеринку, если же этот параметр не исполняется, то вы точно не пойдете на нее. Если вес какого-либо параметра равен 0, то такой инпут нам совершенно не нужен, и нам проще исключить его, так как никакой роли в принятии решения он не играет.
Вернемся к весам. Напомню, вы руководствуетесь тремя параметрами при принятии решения: идти на вечеринку или нет. Это знакомство с другими людьми на ней, погода и ваше настроение. Предположим, у нас есть четко заданные веса, которые мы должны распределить по параметрам: 0.6, 0.4 и 0.2. Вы скорее всего не пойдете на вечеринку, если у вас плохое настроение, поэтому зададим параметру "Настроение" вес 0.6 - он будет самым весомым при принятии решения. Вас совершенно не смущает отсутствие знакомых на вечеринке - это хороший повод завести новых знакомых; поэтому параметру "Знакомство с другими участниками" зададим параметр 0.2 - этот параметр будет иметь самый низки приоритет при решении. Оставшийся вес отправим в параметр "Погода" - 0.4.
Мы расставили вес на соединениях инпутов с нейроном. Кстати, такие соединения называются синапсами. Отлично! Теперь дело за нейроном - он должен высчитать результат: 0 - не идем на вечеринку, 1 - идем.
Но как он будет это делать? Существует так называемая Функция Активации. На самом деле их существует несколько. Но нам нужна только одна, та, результат которой имеет более или менее логический характер. Сигмоида возвращает значения в пределах от 0 до 1.
Сигмо́ида — это гладкая монотонная возрастающая нелинейная функция, имеющая форму буквы «S», которая часто применяется для «сглаживания» значений некоторой величины. Часто под сигмоидой понимают логическую функцию .
Она выглядит следующим образом:
Эта функция логически "схлапывает" значение X до интервала от 0 до 1. Думаю что такое e не нужно объяснять (это константа, значение которой равно 2.72). Но мы видим еще одну "букавку" - x. Что такое x?
Для того, чтобы узнать это нам нужно вернуться на пару шагов назад и разобраться с тем, как веса, которые мы распределили добираются до нейрона. Смоделируем ситуацию: на вечеринке вы знаете несколько человек, погода отличная, а настроение у вас оставляет желать лучшего. Теперь посмотрим какой вид приобретают наши инпуты.
Как видим, рядом с инпутами появились их значения. У вас есть знакомые на вечеринки, значит параметр выполнен - ставим 1, логическое "да". Погода классная - та же штука. Настроение у вас плохое - здесь ставим 0, так как параметр не выполнен. Сейчас нейрон должен собрать информацию от инпутов, чтобы принять решение. Он умножает вес каждого инпута на их значения и складывает их.
Давайте выполним это действия на наших инпутах и весах.
Вес, который дойдет до нейрона от инпута "Знакомство с другими участниками" = 1 * 0.2 = 0.2
Вес, который дойдет до нейрона от инпута "Погода" = 1 * 0.4 = 0.4
Вес, который дойдет до нейрона от инпута "Настроение" = 0 * 0.6 = 0
И теперь сложим их: 0.2 + 0.4 + 0 = 0.6
Это и есть наш X из функции активации. То есть в функции активации X = 0.6. Хорошечно, теперь вставим это значение в функцию.
Теперь нам осталось лишь высчитать это значение. Давайте пропустим магию математики и перескочим уже к ответу. Результат такой функции будет равен 0.(641025). Округляя значение мы получаем логическое "Да", 1. Мы можем оправдать данное решение, если у нас плохое настроение, мы вполне можем пойти к друзьям в хорошую погоду, чтобы хоть как-то развеется. Но это крайне субъективно, потому что мы сами взяли случайные веса для наших инпутов и начали вычисления. В реальной же жизни все проходит максимально индивидуально.
Задача данной главы и части была не предсказать ваше поведение, при подобном случае, а показать как устроен перцептрон и его работа.
В следующей части мы разберем как применяется та же логика на задачу из первой части и реализуем ее программно. Всем хорошего дня/вечера/ночи/утра!