В прошлой статье очень много внимания уделялось линейной функции. Почему? Дело в том, что многие процессы, происходящие в природе, можно описать с помощью линейной функции. Но не всё так просто.
Опять линейный классификатор
Очень сложные процессы можно представить как совокупность большого количества линейных процессов.
В качестве примера давайте разберём функцию
y= x2
Вспомним как выглядит линейная функция
y= kx+b
Возьмем x = 1, тогда
y=12 = 1
Чтобы прийти к такому же ответу линейная функция должна быть такой:
y = 1*1+0,
где k = 1, b = 0
Теперь возьмем x =2.
y=22 = 4
Линейная функция будет иметь следующий вид:
y = 1*2+2,
где k = 1, b = 2
Но ведь мы можем это записать и по другому:
y= 2*2+0
или
y=0.5*2+3
Возьмем x = 3
y=32 = 9
Линейный вариант, например:
y=2*3+3
И так далее. Как видите в линейной функции меняется k и b. А ведь эти переменные тоже можно вычислить используя линейные функции, в которых есть свои переменные k и b. А их, в свою очередь, тоже можно вычислить при помощи ещё одних линейных функций. И так может продолжаться до бесконечности.
Логические функции
Однако не все можно объяснить с помощью линейных функций. В этой части нашего повествования мы отступим от темы насекомых и обратимся к логическим функциям.
Логические функции это своего рода «мыслительные» операции, которые имеют свой собственный язык. Например, когда мы говорим: «Ты получишь пудинг только в том случае, если уже съел овощи И все равно голоден», мы используем логическую функцию «И». Эта функция становится истинным только тогда, когда оба условия выполнены. Таким образом, если я голоден, но еще не ел овощи, то не получу свой пудинг.
Когда мы говорим «Ты можешь погулять в парке, если сегодня выходной ИЛИ у тебя отпуск», мы используем логическую функцию «ИЛИ». В отличие от функции «И», где все условия должны исполниться одновременно, в случае «ИЛИ» достаточно одного из них. Поэтому даже если сегодня не выходной день, но у меня отпуск, я всё равно могу пойти в парк.
Ранее мы представляли функцию в виде машины, которая принимает некоторые входные данные, выполняет определенные действия и выдает один ответ.

Значение истина(условие выполнено) часто представляется в компьютерах как число 1, а значение ложь(условие не исполнено) — как число 0. В приведенной ниже таблице результаты работы логических функций И и ИЛИ представлены с использованием этой лаконичной нотации для всех комбинаций входных значений А и В.
Условие 1 (Вход А) | Условие 2 (Вход Б) | Логическая функция «И» Должны быть выполнены оба условия | Логическая функция «ИЛИ» Должно быть выполнено хотя бы одно условие |
0 | 0 | 0 | 0 |
0 | 1 | 0 | 1 |
1 | 0 | 0 | 1 |
1 | 1 | 1 | 1 |
Здесь отчетливо видно, что результат функции «И» будет истинным только тогда, когда истинны и А, и В.
Булевы функции занимают центральное место в информатике. Первые электронные вычислительные устройства были построены на основе крошечных электрических схем, которые выполняли логические операции. Эти схемы, в свою очередь, были способны выполнять даже арифметические операции, хотя сами по себе они выполняли лишь базовые операции.
Представьте себе простую линейную модель, которая использует тренировочный набор данных для определения того, управляются ли эти данные логической функцией. Подобные задачи часто возникают у учёных, изучающих причинно-следственные связи или взаимосвязь между наблюдаемыми величинами.
Например, требуется найти ответ на следующий вопрос: “Повышается ли вероятность заболевания малярией в тех местностях, в которых постоянно идут дожди И температура превышает 35 градусов?” Или такой: “Повышается ли вероятность заболевания малярией, если выполняется любое (функция «ИЛИ») из этих условий?”
Логическая функция «И»
Обратите внимание на диаграмму, представленную ниже. Она демонстрирует значения на двух входах логической функции, А и В, которые изображены в виде координат точек на графике. Как можно увидеть, выходной результат функции, отмеченный зелёным цветом, является истинным только тогда, когда оба входных значения принимают значение 1, то есть являются истинными. В остальных случаях выходной результат будет ложным, что показано красным цветом.

Здесь же показана прямая линия, отделяющая крас ную область от зеленой. Эта линия представляет линейную функцию, которую можно использовать для обучения линейного классификатора, что мы делали ранее.
Мы не будем выполнять расчёты, как делали в прошлой статье, поскольку это не принесёт ничего принципиально нового. На самом деле, можно предложить множество других вариантов проведения разделительной линии, которые будут работать так же хорошо. Но основной вывод из этого примера заключается в том, что простой линейный классификатор, имеющий вид у = ах + b, можно обучить работать с функцией «И».
Логическая функция «ИЛИ»
А теперь давайте посмотрим на графическое представление логической функции «ИЛИ».

На этот раз красной осталась только точка (0,0), поскольку она соответствует ситуации, когда оба входа, А и В, имеют ложные значения. Для всех остальных комбинаций значений хотя бы один из них является истинным, поэтому результат также будет истинным.
Эта диаграмма наглядно демонстрирует, что линейный классификатор может быть обучен работе с функцией «ИЛИ».
Логическая функция «Исключающее ИЛИ»
Существует еще одна логическая функция, «Исключающее ИЛИ», которая дает истинный результат только в том случае, если одно из условий выполняется, а другое нет. Таким образом, если оба оба условия не выполнены или оба исполнены, то результат будет ложным. В следующей таблице представлены все возможные комбинации условий и соответствующие им результаты выполнения функции «Исключающее ИЛИ».
Условие 1(Вход А) | Условие 2(Вход Б) | Исключающее ИЛИ |
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
Взгляните на диаграмму, соответствующую этой функции.

Вот в чём сложность: мы не видим, как разделить зелёную и красную области с помощью одной прямой линии.
И это действительно так: невозможно провести одну прямую линию, которая успешно разделит данные, выделенные красным и зелёным цветом. Это значит, что простой линейный классификатор не сможет научиться работать с этой функцией.
Основная концепция нейросетей
Мы только что столкнулись с главным ограничением простого линейного классификатора: такие классификаторы не подходят, если базовая задача не позволяет разделить данные с помощью одной прямой линии.
Однако нам нужно, чтобы нейронные сети могли решать самые разнообразные задачи, включая те, которые не допускают линейного разделения данных.
Следовательно, нам необходимо найти выход из этой ситуации. К счастью, он существует: мы можем объединить несколько классификаторов. Это наглядно демонстрирует приведенная ниже диаграмма с двумя разделительными линиями. Данная идея — это основная концепция нейросетей.

Теперь можно приступить к созданию первой нейронной сети, в которой несколько классификаторов работа ли бы сообща. Эти мы займёмся в следующей статье.