нейронные сети искусственный интеллект

Искусственный интеллект в вашем смартфоне. Как работают нейросети?

Оценка этой статьи по мнению читателей:
5
(22)

— Как смартфон умеет так красиво размывать фон на портретных снимках?

— А, ты об этом. Ну здесь все просто — искусственный интеллект!

— Ага, а как тогда Samsung Galaxy Note распознает рукописный ввод?

— Машинное обучение. Как же еще

— Хм. А вот iPhone со своим Face ID? Он-то как может определить мое лицо и разблокировать смартфон?

— Да и здесь никаких секретов нет — с помощью нейронных сетей!

— А…

— НЕЙРОСЕТИ!

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

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

Но вам хватает подобного объяснения? Не хотели бы вы заглянуть за ширму этих слов и узнать (а еще лучше — понять), как в действительности работает искусственный интеллект, нейронные сети и машинное обучение? За счет чего бездушная машина смогла обыграть в 2016 году лучшего игрока в Го? Объяснить эту победу алгоритмами невозможно, ведь, Го — это игра, требующая применения интуиции и творческого мышления! Многие ученые перед матчем заявляли, что подобное просто невозможно, ну не в ближайшие 10 лет точно…

Пока весь мир сходит с ума от 5G и вакцин Билла Гейтса, у нас под носом разворачивается по-настоящему пугающая революция — нейронные сети. Пару веков назад промышленная революция сделала многих людей бесполезными для общества, заменив их машинами. В скором времени нейросети смогут заменить и оставшиеся профессии: врачей, музыкантов, художников, фотографов, аналитиков, переводчиков, инженеров и мн. др.

И вдвойне обидно то, что, в отличие от 5G, простые люди даже не поймут, что именно нужно сжечь или сломать, чтобы это как-то остановить. Скоро бьюти-блогерам придется обсуждать не электромагнитные волны и вирусы, а перцептроны и градиентные спуски. Грядут тяжелые времена для всех.

Человеческий мозг как модель искусственной нейросети

Что же не так с компьютерами и смартфонами? Почему не достаточно наращивать вычислительную мощность, пытаясь всё сильнее уменьшить размеры транзисторов на чипе?

Дело в том, что компьютеры способны выполнять лишь алгоритмы — четкую последовательность действий. Например, взять число X, умножить его на число Y и получившийся результат разделить на 2.

Но какой алгоритм действий придумать для имитации зрения? Вот я открываю камеру своего смартфона, навожу ее на объект и моментально вижу на экране следующее:

Определение сцены ИИ камеры Huawei Y7 2019

Цветок!? Объясните мне, как в этом зеленом «нечто» с желтыми пятнами смартфон «увидел» цветы? Это вы видите картину целиком, а для смартфона она является лишь набором из миллионов точек (пикселей), хаотически разбросанных по матрице.

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

Но мы-то понимаем, что это цветок. Более того, мы поймем это, даже если никогда раньше не видели именно таких цветов. Получается, наш мозг использует не алгоритмы, а что-то другое? Верно! Наш мозг — это нейросеть. И именно нейросеть способна решать такие задачи.

Что же такое нейросеть?

Нейросеть — это сеть (связка) нейронов. Например, если взять 100 нейронов и «подключить» их друг к другу, мы получим простенькую нейросеть.

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

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

схема нейрона

Дендриты — это маленькие отростки, к которым могут подключаться другие нейроны. Представьте, что дендриты — это разъемы/входы. Чтобы сделать сеть из нейронов, нам нужно один нейрон подключить к другому. Так вот, подключение происходит именно к дендритам. У одного нейрона их может быть очень много (до 20 тысяч).

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

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

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

Чтобы лучше понять эту модель, нужно посмотреть на синапс — место соединения двух нейронов:

устройство синапса

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

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

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

Ну хорошо! С этим более-менее все понятно, но причем здесь распознавание цветов, запоминание слов и остальная мозговая деятельность? Как простой электрический сигнал, блуждающий по нейронам, делает всю эту магию?

Чтобы ответить на этот вопрос, перейдем к искусственному интеллекту и искусственным нейросетям.

Искусственный интеллект простыми словами. Как работает нейросеть?

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

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

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

Если с этим все понятно, поехали дальше. Но вначале я хочу немножко оправдаться за то, что будет сказано далее. Не питайте иллюзий, нейросети — это сложно, очень сложно. Чтобы во всем разобраться, нужно потратить много времени, почитать книгу, а лучше — несколько. Поэтому я не очень представляю, как это реально объяснить в короткой статье. Буду стараться, но приношу извинение заранее, если местами покажется сложно. Дальнейший текст рассчитан на человека без малейшей подготовки и каких-либо знаний в области нейросетей, программирования или даже математики.

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

Но что такое искусственный нейрон? Как его представить? Это маленький компьютерный чип, а сеть — это тысячи таких чипов, связанных между собой проводами? Нет.

Не нужно все так усложнять, в реальности все гораздо проще! Нейрон — это циферка (не совсем). Ну, скажем, 0.4. Таких циферок может быть очень много. Если обведем цифру в кружочек, получится простенькая схема нейросети.

Пусть у нас будет вот такая нейросеть из 9 нейронов, где каждый кружок — это отдельный нейрон, а внутри кружочка находится какая-то цифра (для удобства назовем каждый нейрон буквой):

примитивная модель нейросети
Простая модель нейросети

Здесь мы видим 3 слоя нейронов, где первый — a, b, c, второй — d, e, f и третий g, h, i. На первый слой (a, b, c) мы подаем сигнал. Это может быть что угодно — картинка, звук или текст. Естественно, предварительно нужно перевести сигнал в цифры, так как нейроны не способны работать ни с чем, кроме чисел (как это делается — я расскажу чуть позже). Ведь наш мозг тоже не получает никаких звуков или картинок. Все переводится в электрические импульсы. Так и здесь. Все переводится в числа (чем больше число — тем, как бы, сильнее электрический импульс).

Дальше каждый нейрон, по аналогии с нейронами мозга, как-то изменяет эту цифру и передает ее дальше остальным нейронам. Чтобы это показать, уберем все лишние нейроны и посмотрим, что будет, если мы подадим на первый нейрон (a) цифру 0.4:

примитивная нейросеть

Почему нейрон получил цифру 0.4, а передал зеленому нейрону 0.8, оранжевому — 1.2, а розовому — 0.2? На самом деле, первый нейрон отправил всем цифру 0.4, но по дороге к каждому нейрону она как-то изменилась.

Стрелочки — это аналог синапсов. Помните, именно синапсами связаны нейроны? Чем больше нейромедиаторов выделяется, тем сильнее импульс.

Почему же от нейрона a ушла цифра 0.4, а к нейрону d пришла 0.8? Она просто увеличилась вдвое. То есть, так сложилось, что эта связь a->d будет всегда увеличивать число (усиливать сигнал) в 2 раза. Какой бы сигнал мы не отправляли по этой связи, он всегда будет умножаться на 2. Это называется весом связи. Что значит «так сложилось» — пока не важно. Просто сложилось и все — родился человек с такими начальными весами, а при создании нашей нейросети все веса были выбраны случайным образом.

РЕКЛАМА

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

В нашем мозгу каждый нейрон связан с другим так, что электрический сигнал, проходя по какой-то конкретной связи, будет всегда изменяться одинаково (усиливаться или ослабляться). По этой причине нам так тяжело разорвать привычку, то есть, изменить вес связи. Только ребенку нужно делать математику, и все — человек отупел на глазах. Сигналы постоянно гасятся. Но стоит ему сесть поиграть в свою любимую экономическую стратегию, как мозг буквально светится от электричества!

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

Еще несколько важных деталей…

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

Посмотрим на картинку:

как нейроны складываются

Мы видим здесь знакомый нейрон, который отправлял цифру 0.4 и эта цифра, проходя по «аксону» и «синапсам», умножалась на свой вес (от синего к зеленому нейрону вес был 2, то есть, число 0.4 умножилось на 2 и так далее). Теперь мы видим, что и от фиолетового нейрона цифра 0.9 идет по своим связям к тем же нейронам второго слоя. Только у этих связей уже свои веса: связь фиолетовый — зеленый нейрон имеет вес 0, то есть, сигнал просто обнуляется, а связь фиолетовый — оранжевый нейрон имеет вес 4, то есть, усиливается в 4 раза.

В нейроне все поступившие сигналы суммируются. Именно это мы и видим на картинке выше. Выходит, нейрон — это не только циферка, но еще и сумматор. То есть, нечто, что суммирует все поступающие числа.

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

Как вы думаете, что с вами случится, если количество этих эритроцитов резко возрастет на 100 клеток? Напомню, в среднем их около 5 миллиардов в 1 миллилитре крови. Естественно, на такие мелочи даже не нужно обращать внимание. Но что будет с человеком, если температура тела поднимется на 4 градуса с 36.6° до 40.6°?

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

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

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

Как нейросеть может распознавать образы?

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

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

А еще есть, к примеру, генеративно-состязательные нейросети (сокращенно их называют GAN или ганы). Это еще интереснее сверточных сетей, так как с их помощью можно уже делать фантастические вещи. Например, создаем примитивный набросок, а затем GAN нарисует (не просто подставит откуда-то, а именно нарисует, создаст из ничего) качественную фотографию:

пример работы генеративно-состязательной сети
Слева — нарисованный набросок, справа — работа нейросети

Повторюсь, все, что вы видите справа, не существует на самом деле. Нейросеть научилась рисовать реалистичные изображения автомобилей, дорог и деревьев. Да что там, деревья! Посмотрите, какие портреты рисуют современные нейросети. Вот синтетический портрет, нарисованный генеративно-состязательной нейросетью в 2014 году:

портрет, сделанный нейросетью
maliciousaireport.com

А вот результат работы нейросети спустя 3 года:

портрет, сделанный искусственным интеллектом в 2017 году
maliciousaireport.com

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

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

схематическое отображение перцептрона

А вот на сайте исследовательского института Asimov Institute я нашел картинку, где собраны все виды нейросетей (перцептрон изображен в самом начале):

все виды нейросетей

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

Краткий итог

Итак, нейросеть — это не мифическая сеть из тысячи супер-компьютеров, в которую ваш смартфон посылает картинку для обработки. Конечно, есть и такие варианты, когда вычисления слишком сложные и энергоемкие. Например, когда вы говорите команду Google Ассистенту или Siri, эта команда отправляется на мощный сервер компании, а затем возвращается ответ от нейросети.

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

Например, если мы хотим, чтобы нейросеть посчитала, сколько будет 2+2, то подаем эти сигналы на вход. В первый нейрон отправляем двойку, во второй — плюс (в реальности вместо плюса будет отправляться какой-то код, например, 0 — это плюс, 1 — это минус), а в третий нейрон — еще одну двойку.

Все сигналы проходят по сети. Какие-то нейроны получают больший вес и они активируются, в каких-то нейронах сигналы гасятся. В итоге, на выходе самое большое число находится в нейроне, отвечающем за цифру 5. Значит, скорее всего, это и есть правильный ответ. Сеть отвечает: «2+2 будет 5»!

результаты работы необученной нейросети
Счет только до девяти, так как 10-й нейрон забыл нарисовать

Пять? Что за глупость! Хотя, с другой стороны, а чего мы ожидали? Что какой-то сигнал пройдет по нейронам и мы магическим образом получим правильный ответ? Так это не работает. Для того, чтобы нейросеть выдала правильный ответ, мы должны ей сказать, как ребенку: «Нет, 5 — это неверно! Верный ответ — 4».

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

Теперь, когда мы подаем на входы в нейросеть 2+2, все веса откорректированы самостоятельно нейросетью таким образом, что именно четвертый нейрон получает самое высокое значение. Прекрасно!

Но затем мы подаем 2+3 и получаем ответ 9! Снова неверно. Мы «говорим» нейросети, чтобы она заново пересмотрела все веса так, чтобы на выходе сработал нейрон под номером 5, а не 9. И неросеть начинает заново перенастраивать все веса так, чтобы когда мы подавали сигнал 2+2, он проходил по всем связям, умножаясь на веса и в итоге получалось 4, а когда подаем 2+3 — получалось 5.

Чем больше мы будем давать таких примеров, тем лучше наша сеть начнет понимать, что от нее требуется. Благодаря самостоятельной подстройке весов, нейросеть научится решать простенькие примеры. Заметьте, мы ей не указывали, как это делать, то есть, какие веса и как подстраивать. Она сама научилась, основываясь на наших правильных ответах.

Но, конечно же, для таких глупостей никто нейросети не использует, так как нейросеть всегда выдает вероятность, а не точный результат. То есть, она отвечает примерно так: «с вероятностью 80% это цветок, но даю еще процентов 20, что это котик». Для точных вычислений такое не годится.

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

А в конце этой статьи я бы еще хотел добавить несколько слов о смартфонах.

Смартфоны с аппаратной поддержкой искусственного интеллекта

Компания Apple первой на рынке начала выпускать смартфоны, у которых в микрочип был встроен отдельный нейронный сопроцессор. Конечно же, я говорю об iPhone X с его Apple A11 Bionic и сопроцессором Neural Engine (в переводе с англ. нейронный движок).

Практически одновременно с Apple компания Huawei выпустила свой вариант аппаратного ускорителя искусственного интеллекта — Neural Network Processing Unit или просто NPU. Он был частью собственного процессора Huawei Kirin 970.

Компания Qualcomm также не осталась в стороне и в партнерстве с Facebook реализовала аппаратную поддержку самJQ популярной на планете среды для глубокого обучения нейросетей (Deep Learning) в своих процессорах Snapdragon 660 и выше.

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

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

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

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

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

Прогресс движется к тому, чтобы на смартфонах можно было запускать даже глубокое обучение (Deep Learning). К слову, глубокое от неглубокого машинного обучения отличается лишь количеством слоев нейронов. Выше я приводил картинку, где было показало только 3 слоя: входной, центральный и результат. Но таких слоев может быть гораздо больше, соответственно, сеть глубже. А чем глубже сеть, тем интереснее и сложнее задачи она может выполнять.

На этом, пожалуй, и остановимся.

Алексей, главный редактор Deep-Review (alexeysalo@gmail.com)

 

P.S. Мы открыли Telegram-канал и сейчас готовим для публикации очень интересные материалы! Подписывайтесь в Telegram на первый научно-популярный сайт о смартфонах и технологиях, чтобы ничего не пропустить!

 

Понравилась статья? Поделитесь с другими:
  • 43
  • 2
  •  
  • 1
  •  
    46
    Поделились

Как бы вы оценили эту статью?

Нажмите на звездочку для оценки

Внизу страницы есть комментарии...

Напишите свое мнение там, чтобы его увидели все читатели!