Глава 1. Введение

В этой главе я в общих чертах расскажу о предмете данного учебника (и сайта): искусственных нейронных сетях. Что это такое, какие преимущества они имеют и так далее.

Оглавление

Популярность

Тема машинного обучения, интеллектуальных алгоритмов и, в особенности, искусственного интеллекта чрезвычайно популярна в наше время. Это легко можно увидеть, наблюдая за новостями на различных IT порталах. Подтверждает это и статистика. На графиках ниже представлены данные сервиса Google Trends с 2005(9) по настоящее время.

Поиск в интернете по машинному обучению (мир):

Новости по той же теме (мир):

Новости по искусственному интеллекту (мир):

Новости по искусственному интеллекту (Россия):

Как видно, тема известная.

Терминология

Разберемся с терминологией. Что такое искусственный интеллект, машинное обучение и искусственные нейронные сети. Как они связаны?

Начнем с самого важного, с искусственного интеллекта.

Искусственный интеллект (ИИ) (Artificial intelligence, AI):

1. наука о создании интеллектуальных (умных) машин (чаще всего — компьютерных программ).

2. свойство интеллектуальной системы выполнять творческие функции, которые считаются прерогативой человека.

В обоих определениях выше присутствует словосочетание «интеллектуальная машина (система)». Поясню его подробнее. Интеллектуальная машина — система (например, программа), способная выполнять задачи, считающиеся творческими.

Другими словами искусственный интеллект и наука о творческих системах, и сама способность «творить» этих систем.

Теперь настала очередь разобраться с термином «машинное обучение».

Машинное обучение (Machine learning) — подраздел искусственного интеллекта, изучающий различные способы построения обучающихся алгоритмов.

Стоит уточнить, что под обучающимися алгоритмами понимаются алгоритмы, которые меняются (обучаются) каким-то образом в зависимости от входных данных.

Машинное обучение — очень обширная область знаний. Можно ведь по-разному определять слово «обучение» и каждый раз получать интересные результаты. Однако среди множества парадигм и подходов в машинном обучении выделяется одна очень интересная область — искусственные нейронные сети.

Искусственные нейронные сети (ИНС) (Artificial neural networks, ANN)упрощенные модели биологических нейронных сетей.

1иерархия

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

В целом об ИНС

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

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

Зададимся вопросом. А что такое биологические нейронные сети? Если вы помните школьную программу по биологии, то ответ скорее всего сразу пришел вам в голову. Вообще-то «голова» и есть один из ответов на этот вопрос. Точнее не голова, а наши мозги. Мозги есть не только у нас, но и у многих других животных. У животных без мозгов (медузы, черви) все равно есть нервная система.

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

Теперь задумаемся. А из чего состоит нервная система или мозг? Ответ очевиден — из нейронов. Наш мозг, как и любая биологическая нейронная сеть, состоит из совокупности нейронов. Строение биологического нейрона показано на рисунке ниже.

biologicalneuron

Как можно заметить, биологический нейрон — чрезвычайно сложная система. Во многом это объясняется тем, что нейрон, помимо обработки сигнала (основное его назначение), вынужден еще выполнять кучу других функций, поддерживающих его жизнь. Более того, сам механизм передачи сигнала от нейрона к нейрону тоже очень сложный с биологической и химической точки зрения.

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

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

Искусственный нейрон (Artificial neuron)упрощенная модель модель биологического нейрона.

artificialneuronwelcome

Биологические нейронные сети представляют собой совокупность биологических нейронов. Однако в таких сетях тоже много ненужных для обработки сигнала аспектов (системы очистки от продуктов жизнедеятельности и т.д). Плюс ко всему нейронов в биологической нейросети очень много.

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

annwelcome

Таким образом логично приходим к другому определению ИНС.

Искусственная нейронная сеть (ИНС) — совокупность взаимодействующих между собой искусственных нейронов.

Почему нейросети работают?

Рассмотрим на ознакомительном уровне один важный вопрос. Почему нейросети работают (то есть могут решать задачи)? Ответ на этот вопрос не самый очевидный.

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

Это почти правильный ответ. Тонкость заключается в том, что все нейроны работают по одному алгоритму. Другими словами внутри любого нейрона сигнал обрабатывается всегда одинаково.

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

Синапс (Synapsis) — место стыка выхода одного нейрона и входа другого, в котором происходит усиление/ослабление сигнала.

На рисунке ниже цветом выделены синапсы (в центре сверху на картинке можно увидеть один из синапсов в деталях). Красный цвет — главный нейрон на картинке. Желтый цвет — выходы соседних нейронов.

sinapswelcome

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

У каждого биологического нейрона тысячи входов. Каждый из них соединен с выходами других нейронов. Значит, имеем тысячи синапсов на каждый нейрон. Помножим это число на миллиарды нейронов в биологических нейросетях (в головном мозге 85 миллиардов нейронов!). Получаем огромное число синапсов.

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

Именно так и происходит преобразование множества входных сигналов в верное решение на выходе.

Уровень сложности нейросетей

Выше я уже говорил, что мы уменьшаем количество нейронов для искусственных нейронных сетей (миллиарды нейронов моделировать мы не можем). Насколько сильно мы уменьшаем это количество? Внимание на картинку ниже.

howsimplify

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

Серый квадрат слева внизу — возможности обычных компьютеров (но не компьютерных реализаций нейронных сетей!). Далее идут два эллипса. Они представляют собой современные программные (а иногда и аппаратные) реализации искусственных нейронных сетей.

Как видите, до человека еще достаточно далеко. Более того, здесь используется логарифмическая шкала. Не вдаваясь в подробности можно сказать, что даже очень маленькое перемещение по диагонали на данном графике означает увеличение в миллионы раз количества синапсов и скорости работы.

Где используются нейросети?

Вы уже познакомились с искусственными нейронными сетями. Теперь обсудим критически важный вопрос: а где и для чего их вообще используют?

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

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

wheretouse

Проблемы малой/средней сложности, которые точно известно, как решать:

  • решить простое уравнение
  • вывести на экране окно программы
  • распечатать документ на принтере

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

Проблемы малой/средней сложности, которые частично известно, как решать:

  • простейшее прогнозирование
  • расчет погрешностей
  • приближенное решение уравнений

Такие задачи можно решать при помощи специальных статистических методов.

Проблемы высокой сложности, которые непонятно, как решать:

  • распознавание образов
  • распознавание речи
  • сложные прогнозы

На этом типе задач я остановлюсь подробнее.

Вот вы идете по улице. Вокруг вас много прохожих. Вы смотрите на них и моментально распознаете лица. Этот процесс не вызывает у вас никаких вопросов. Вы просто очень хорошо натренировались его совершать.

А теперь вы поставили себе задачу — написать компьютерную программу, которая по данной картинке распознает лица. Можно даже проще. Попробуйте накидать приблизительный алгоритм распознавания лиц на бумаге. У вас ничего не выйдет. И все потому, что вы на бессознательном уровне распознаете лица, а бессознательное вы контролировать не можете. Делаете, но не знаете как.

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

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

Нейронные сети применяют для решения задач, алгоритм решения которых неизвестен.

Эта способность нейросетей и сделала их такими популярными. Нейросети можно обучить играть в игры, узнавать голос, прогнозировать рост/падение цен. Их можно научить всему, что мы делаем бессознательно!

Преимущества нейронных сетей

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

Понять, откуда они берутся, очень просто. Все плюсы нейронных сетей являются следствиями плюсов биологических нейронных сетей, так как саму модель обработки информации мы практически не меняли (при упрощении).

Отсюда очень просто объяснять преимущества ИНС, просто выводя их из свойств биологических нейросетей.

Устойчивость к шумам входных данных

Представьте себе людей на пешеходном переходе. Вы без труда окидываете всех их взглядом и легко различаете лица. Однако рассмотрим эту картину подробнее. Помимо непосредственно лиц на изображении есть еще и асфальт, одежда людей, машины, сфетофор, сумки. И вся это ненужная (шумовая) информация тоже подается нам в глаза!

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

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

Нейронные сети способны корректно функционировать, даже если на входе данные зашумлены.

randomresistance

Адаптация к изменениям

Представьте, что вы математик. Вы решаете уравнения с помощью каких-то компьютерных программ.

Сегодня утром ваша программа обновилась: в нее был добавлен новый функционал, а интерфейс немного изменился.

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

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

Нейронные сети могут подстраиваться под изменяющуюся окружающую обстановку.

adaptation

Отказоустойчивость

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

Это свойство проявляется и у искусственных нейронных сетей. Они могут выдавать корректные результаты даже при значительном повреждении составляющих их компонентов.

Нейронные сети способны нормально функционировать даже при достаточно серьезных повреждениях.

Сверхвысокое быстродействие

Компьютер выполняет команды последовательно. Однако в голове человека каждый нейрон является маленьким процессором (который принимает сигнал, преобразует его, и подает на выход). И таких процессоров у нас в голове миллиарды. Получаем гигантскую сеть распределенных вычислений. Сигнал обрабатывается нейронами одновременно.

Это свойство потенциально проявляется и в искусственных нейронных сетях. Если у вас многоядерный компьютер, то это свойство будет выполняться. Для одноядерных компьютеров никакой разницы заметно не будет.

Нейронные сети решают задачи быстрее большей части других алгоритмов.

highspeed

Недостатки нейронных сетей

Возможно у вас возникло ложное ощущение, что нейронные сети вот уже сейчас заменяют компьютеры. Можно выбрасывать свои системные блоки и приобретать новомодные нейрокомпьютеры.

Однако это не так. У нейронных сетей есть ряд серьезных недостатков, которые тоже можно вывести из биологических нейронных сетей.

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

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

Перечислим их.

Ответ всегда приблизительный

Начнем с человеческого мозга.

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

whatisit

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

Вы этого не замечаете, но на самом деле вы строите что-то типо таблички вероятностей у себя в голове и говорите, что, скорее всего (бессознательно выбрали наиболее вероятный результат), во 2 прямоугольнике написано «но». В случае же первого прямоугольника вы говорите, что, непонятно, что там (вероятности почти равны), но, мне кажется (выбираете случайным образом), что там написана буква «о».

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

Нейронные сети не способны давать точные и однозначные ответы.

Многошаговое принятие решений

Связь с человеческим мозгом тут не сильно прослеживается в силу того, что мозг – супер сложная нейросеть и за счет свой сложности он может преодолеть этот недостаток.

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

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

nomoresteps

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

Нейронные сети не могут решать задачу по шагам.

Вычислительные задачи

Этот недостаток искусственных нейронных сетей в какой-то степени является следствием двух предыдущих недостатков.

Обратите внимание на картинку ниже. Как заставить сеть провести эти преобразования?

nomath

Первая проблема – очередность. Надо каким-то образом, используя только входы сети, указать ей какая часть выражения находится под корнем, а какая часть находится слева от знака равенства. Да и как передать сам знак равенства?

Предположим, что вы каким-то образом смогли доставить эти данные в сеть

Вторая проблема – последовательные шаги. Уже описанный выше недостаток.

И вишенка на торте – невозможность выдачи точных результатов. Это можно представить себе следующим образом. Вы учите нейросеть:

– 2 + 3 = ?
= 983
– Неправильно! = 5.
2 + 3 = ?
= 5
– Правильно!
2 + 4 = ?
= 5
– Неправильно! = 6.
2 + 4 = ?
= 5.5

И так будет происходить всегда.

Нейронные сети не способны решать вычислительные задачи.

Выводы

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

Вопросы и задачи

Основы очень важны для дальнейшего понимания материала. Обязательно добейтесь четкого ответа на все нижеприведенные вопросы!

Сформулируйте оба определения ИИ

Что такое машинное обучение?

Расположите по порядку вложенности: ИНС, ИИ, машинное обучение.

Что такое искусственный нейрон и искусственная нейронная сеть? В чем их отличие от биологических версий?

Объясните, как работают нейронные сети (в целом)

При решении каких задач применяются нейронные сети?

Перечислите плюсы нейронных сетей

Перечислите недостатки нейронных сетей

Подписаться на уведомления о новых главах

Укажите свой адрес электронной почты в поле ниже и на него придет уведомление, когда новая глава будет опубликована.

Глава 1. Введение: 13 комментариев

  1. Видимо, ошибочка «ИНН».
    ИНС — искусственная нейронная сеть.(англ. ANN — Artificial neural network)

  2. «При решении каких применяются нейронные сети?» — пропущено слово.

    Очень занимательно и интересно, прямо загорелся этой темой. Спасибо!

  3. Спасибо за простое понятное изложение такой сложной темы. Обязательно пишите дальше. Я человек очень далекий от науки, но и мне очень хочется понять что же такое ИИС. И, поверьте, таких как я очень много, даже если они себя никак не афишируют 🙂 Не бросайте нас на полпути. Пишите!!!

     

  4. Спасибо вам Петр Радько за подробно изложенную тему, всё так ясно, легко воспринимается, спасибо вам за кропотливый труд

  5. Спасибо огромное, продолжайте в том же духе, надеюсь скоро будет практика

  6. Исправьте повторения:

    В этой главе я расскажу в общих чертах расскажу о предмете данного учебника

  7. Добрый день! Я благодарен вам за проделанная работу, так как данная тема интересуют сейчас большое количество людей очень приятно встречать полезные и исчерпывающие ресурсы вроде neuralnet.info . У меня возникло пару вопросов и было бы здорово найти на них ответы.

    1. В заданиях к 1-ой главе есть вопрос: «Объясните, как работают нейронные сети (в целом)» и в ответе я нашел весьма неоднозначное предложение: Когда синапсов очень много, можно подобрать такие их параметры, что входной сигнал будет преобразовываться в правильный выходной. Что имеется ввиду под «правильным» выходным сигналом?

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

    Спасибо вам, Пётр за прекрасный материал.

    1. Спасибо за комментарий!

      А теперь к вопросам:
      1. Под правильным выходным сигналом понимается правильный ответ сети. Предположим наша сеть узнает лица из толпы. На ее входы подается множество сигналов. Я построил сеть так, что выходной сигнал, равный 1 (единице) означает, что сеть узнала лицо. Так вот, когда я подаю на входы сети сигналы, обозначающие лицо, я хочу, чтобы выходной сигнал сети равнялся 1. 1 — «правильный» выходной сигнал сети (то есть лицо было распознано). Если бы на выходе были другие числа: 0, 25, 0.43 — то это «неправильные» выходные сигналы, то есть не то, что мне нужно.

      2. Вы абсолютно правы. Можно использовать много последовательных ИНС, соединенных друг с другом, однако ввиду других ограничений ИНС и некоторых других факторов научить нейросети доказывать теоремы будет очень трудно.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *