Нейронные сети кратко. Нейронные сети: виды, принцип работы и области применения

Нейронные сети

Схема простой нейросети. Зелёным обозначены входные элементы, жёлтым - выходной элемент

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

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

Хронология

Известные применения

Кластеризация

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

Экспериментальный подбор характеристик сети

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

Экспериментальный подбор параметров обучения

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

Собственно обучение сети

В процессе обучения сеть в определенном порядке просматривает обучающую выборку. Порядок просмотра может быть последовательным, случайным и т. д. Некоторые сети, обучающиеся без учителя , например, сети Хопфилда просматривают выборку только один раз. Другие, например, сети Кохонена , а также сети, обучающиеся с учителем, просматривают выборку множество раз, при этом один полный проход по выборке называется эпохой обучения . При обучении с учителем набор исходных данных делят на две части - собственно обучающую выборку и тестовые данные; принцип разделения может быть произвольным. Обучающие данные подаются сети для обучения, а проверочные используются для расчета ошибки сети (проверочные данные никогда для обучения сети не применяются). Таким образом, если на проверочных данных ошибка уменьшается, то сеть действительно выполняет обобщение. Если ошибка на обучающих данных продолжает уменьшаться, а ошибка на тестовых данных увеличивается, значит, сеть перестала выполнять обобщение и просто «запоминает» обучающие данные. Это явление называется переобучением сети или оверфиттингом . В таких случаях обучение обычно прекращают. В процессе обучения могут проявиться другие проблемы, такие как паралич или попадание сети в локальный минимум поверхности ошибок. Невозможно заранее предсказать проявление той или иной проблемы, равно как и дать однозначные рекомендации к их разрешению.

Проверка адекватности обучения

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

Классификация по типу входной информации

  • Аналоговые нейронные сети (используют информацию в форме действительных чисел);
  • Двоичные нейронные сети (оперируют с информацией, представленной в двоичном виде).

Классификация по характеру обучения

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

Классификация по характеру настройки синапсов

Классификация по времени передачи сигнала

В ряде нейронных сетей активирующая функция может зависеть не только от весовых коэффициентов связей w i j , но и от времени передачи импульса (сигнала) по каналам связи τ i j . По этому в общем виде активирующая (передающая) функция связи c i j от элемента u i к элементу u j имеет вид: . Тогда синхронной сетью i j каждой связи равна либо нулю, либо фиксированной постоянной τ . Асинхронной называют такую сеть у которой время передачи τ i j для каждой связи между элементами u i и u j свое, но тоже постоянное.

Классификация по характеру связей

Сети прямого распространения (Feedforward)

Все связи направлены строго от входных нейронов к выходным. Примерами таких сетей являются перцептрон Розенблатта , многослойный перцептрон , сети Ворда .

Рекуррентные нейронные сети‎

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

Радиально-базисные функции

Искусственные нейронные сети, использующие в качестве активационных функций радиально-базисные (такие сети сокращённо называются RBF-сетями). Общий вид радиально-базисной функции:

, например,

где x - вектор входных сигналов нейрона, σ - ширина окна функции, φ(y ) - убывающая функция (чаще всего, равная нулю вне некоторого отрезка).

Радиально-базисная сеть характеризуется тремя особенностями:

1. Единственный скрытый слой

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

3. Синаптические веса связей входного и скрытого слоев равны единице

Про процедуру обучения - см. литературу

Самоорганизующиеся карты

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

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

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

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

  1. Случайным образом выбирается точка данных x .
  2. Определяется ближайший к x узел карты (BMU - Best Matching Unit).
  3. Этот узел перемещается на заданный шаг по направлению к x. Однако, он перемещается не один, а увлекает за собой определенное количество ближайших узлов из некоторой окрестности на карте. Из всех двигающихся узлов наиболее сильно смещается центральный - ближайший к точке данных - узел, а остальные испытывают тем меньшие смещения, чем дальше они от BMU. В настройке карты различают два этапа - этап грубой (ordering) и этап тонкой (fine-tuning) настройки. На первом этапе выбираются большие значения окрестностей и движение узлов носит коллективный характер - в результате карта «расправляется» и грубым образом отражает структуру данных; на этапе тонкой настройки радиус окрестности равен 1-2 и настраиваются уже индивидуальные положения узлов. Кроме этого, величина смещения равномерно затухает со временем, то есть она велика в начале каждого из этапов обучения и близка к нулю в конце.
  4. Алгоритм повторяется определенное число эпох (понятно, что число шагов может сильно изменяться в зависимости от задачи).

Известные типы сетей

  • Сеть Хэмминга;
  • Неокогнитрон;
  • Хаотическая нейронная сеть;
  • Сеть встречного распространения;
  • Сеть радиальных базисных функций (RBF-сеть);
  • Сеть обобщенной регрессии;
  • Вероятностная сеть;
  • Сиамская нейронная сеть;
  • Сети адаптивного резонанса.

Отличия от машин с архитектурой фон Неймана

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

  • Массовый параллелизм;
  • Распределённое представление информации и вычисления;
  • Способность к обучению и обобщению;
  • Адаптивность;
  • Свойство контекстуальной обработки информации;
  • Толерантность к ошибкам;
  • Низкое энергопотребление.

Нейронные сети - универсальные аппроксиматоры

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

Примеры приложений

Предсказание финансовых временных рядов

Входные данные - курс акций за год. Задача - определить завтрашний курс. Проводится следующее преобразование - выстраивается в ряд курс за сегодня, вчера, за позавчера, за позапозавчера. Следующий ряд - смещается по дате на один день и так далее. На полученном наборе обучается сеть с 3 входами и одним выходом - то есть выход: курс на дату, входы: курс на дату минус 1 день, минус 2 дня, минус 3 дня. Обученной сети подаем на вход курс за сегодня, вчера, позавчера и получаем ответ на завтра. Нетрудно заметить, что в этом случае сеть просто выведет зависимость одного параметра от трёх предыдущих. Если желательно учитывать ещё какой-то параметр (например, общий индекс по отрасли), то его надо добавить как вход (и включить в примеры), переобучить сеть и получить новые результаты. Для наиболее точного обучения стоит использовать метод ОРО , как наиболее предсказуемый и несложный в реализации.

Психодиагностика

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

Хемоинформатика

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

Примечания

  1. Мак-Каллок У. С., Питтс В. ,Логическое исчисление идей, относящихся к нервной активности // В сб.: «Автоматы» под ред. К. Э. Шеннона и Дж. Маккарти. - М.: Изд-во иностр. лит., 1956. - с.363-384. (Перевод английской статьи 1943 г.)
  2. Pattern Recognition and Adaptive Control. BERNARD WIDROW
  3. Уидроу Б., Стирнс С. , Адаптивная обработка сигналов. - М.: Радио и связь, 1989. - 440 c.
  4. Werbos P. J. , Beyond regression: New tools for prediction and analysis in the behavioral sciences. Ph.D. thesis, Harvard University, Cambridge, MA, 1974.
  5. Галушкин А. И. Синтез многослойных систем распознавания образов. - М.: «Энергия», 1974.
  6. Rumelhart D.E., Hinton G.E., Williams R.J. , Learning Internal Representations by Error Propagation. In: Parallel Distributed Processing, vol. 1, pp. 318-362. Cambridge, MA, MIT Press. 1986.
  7. Барцев С. И., Охонин В. А. Адаптивные сети обработки информации. Красноярск: Ин-т физики СО АН СССР, 1986. Препринт N 59Б. - 20 с.
  8. BaseGroup Labs - Практическое применение нейросетей в задачах классификации
  9. Такой вид кодирования иногда называют кодом «1 из N»
  10. Открытые системы - введение в нейросети
  11. Миркес Е. М. ,Логически прозрачные нейронные сети и производство явных знаний из данных , В кн.: Нейроинформатика / А. Н. Горбань, В. Л. Дунин-Барковский, А. Н. Кирдин и др. - Новосибирск: Наука. Сибирское предприятие РАН, 1998. - 296 с ISBN 5020314102
  12. Упоминание этой истории в журнале «Популярная механика»
  13. http://www.intuit.ru/department/expert/neuro/10/ INTUIT.ru - Рекуррентные сети как ассоциативные запоминающие устройства]
  14. Kohonen, T. (1989/1997/2001), Self-Organizing Maps, Berlin - New York: Springer-Verlag. First edition 1989, second edition 1997, third extended edition 2001, ISBN 0-387-51387-6, ISBN 3-540-67921-9
  15. Зиновьев А. Ю. Визуализация многомерных данных . - Красноярск: Изд. Красноярского государственного технического университета, 2000. - 180 с.
  16. Горбань А. Н. , Обобщенная аппроксимационная теорема и вычислительные возможности нейронных сетей , Сибирский журнал вычислительной математики, 1998. Т.1, № 1. С. 12-24.
  17. Gorban A.N., Rossiyev D.A., Dorrer M.G. , MultiNeuron - Neural Networks Simulator For Medical, Physiological, and Psychological Applications , Wcnn’95, Washington, D.C.: World Congress on Neural Networks 1995 International Neural Network Society Annual Meeting: Renaissance Hotel, Washington, D.C., USA, July 17-21, 1995.
  18. Доррер М. Г. , Психологическая интуиция искусственных нейронных сетей , Дисс. ... 1998. Другие копии онлайн: ,
  19. Баскин И. И., Палюлин В. А., Зефиров Н. С., Применение искусственных нейронных сетей в химических и биохимических исследованиях, Вестн. Моск. Ун-Та. Сер. 2. Химия. 1999. Т.40. № 5.
  20. Гальберштам Н. М., Баскин И. И., Палюлин В. А., Зефиров Н. С. Нейронные сети как метод поиска зависимостей структура – свойство органических соединений // Успехи химии . - 2003. - Т. 72. - № 7. - С. 706-727.
  21. Баскин И. И., Палюлин В. А., Зефиров Н. С. Многослойные персептроны в исследовании зависимостей «структура-свойство» для органических соединений // Российский химический журнал (Журнал Российского химического общества им. Д.И.Менделеева) . - 2006. - Т. 50. - С. 86-96.

Ссылки

  • Artificial Neural Network for PHP 5.x - Серьезный проект по разработке нейронных сетей на языке программирования PHP 5.X
  • Форум, посвященный Нейронным Сетям и Генетическим Алгоритмам
  • Миркес Е. М. ,

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

Что такое нейронные сети

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

Биологические нейронные сети

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

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

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

История нейронных сетей

Какова же история развития нейронных сетей в науке и технике? Она берет свое начало с появлением первых компьютеров или ЭВМ (электронно-вычислительная машина) как их называли в те времена. Так еще в конце 1940-х годов некто Дональд Хебб разработал механизм нейронной сети, чем заложил правила обучения ЭВМ, этих «протокомпьютеров».

Дальнейшая хронология событий была следующей:

  • В 1954 году происходит первое практическое использование нейронных сетей в работе ЭВМ.
  • В 1958 году Франком Розенблатом разработан алгоритм распознавания образов и математическая аннотация к нему.
  • В 1960-х годах интерес к разработке нейронных сетей несколько угас из-за слабых мощностей компьютеров того времени.
  • И снова возродился уже в 1980-х годах, именно в этот период появляется система с механизмом обратной связи, разрабатываются алгоритмы самообучения.
  • К 2000 году мощности компьютеров выросли настолько, что смогли воплотить самые смелые мечты ученых прошлого. В это время появляются программы распознавания голоса, компьютерного зрения и многое другое.

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

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

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

Применение нейронных сетей

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

  • Машинное обучение (machine learning), представляющее собой разновидность искусственного интеллекта. В основе его лежит обучение ИИ на примере миллионов однотипных задач. В наше время машинное обучение активно внедряют поисковые системы Гугл, Яндекс, Бинг, Байду. Так на основе миллионов поисковых запросов, которые все мы каждый день вводим в Гугле, их алгоритмы учатся показывать нам наиболее релевантную выдачу, чтобы мы могли найти именно то, что ищем.
  • В роботехнике нейронные сети используются в выработке многочисленных алгоритмов для железных «мозгов» роботов.
  • Архитекторы компьютерных систем пользуются нейронными сетями для решения проблемы параллельных вычислений.
  • С помощью нейронных сетей математики могут разрешать разные сложные математические задачи.

Типы нейронных сетей

В целом для разных задач применяются различные виды и типы нейронных сетей, среди которых можно выделить:

  • сверточные нейронные сети,
  • реккурентные нейронные сети,
  • нейронную сеть Хопфилда.

Сверточные нейронные сети

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

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

Рекуррентные нейронные сети

Рекуррентными называют такие нейронные сети, соединения между нейронами которых, образуют ориентировочный цикл. Имеет такие характеристики:

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

Рекуррентные нейронные сети применяются в распознавании и обработке текстовых данных (в частотности на их основе работает Гугл переводчик, алгоритм Яндекс «Палех», голосовой помощник Apple Siri).

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

И в завершение интересное видео о нейронных сетях.

Если вы следите за новостями из мира науки и техники, вы, вероятно, что-то слышали о концепции нейронных сетей.

Например, в 2016 году нейронная сеть Google AlphaGo побила одного из лучших профессиональных игроков Counter-Strike: Global Offensive в мире со счетом 4-1. YouTube также объявил о том, что они будут использовать нейронные сети для лучшего понимания своих видео.

Но что такое нейронная сеть? Как это работает? И почему они так популярны в машинной обработке?

Компьютер как мозг

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

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

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

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

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

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

Способность к обучению

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

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

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

От нейронов к узлам

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


Каждый из кругов называется «узлом» и имитирует одиночный нейрон. Слева находятся входные узлы, в середине - скрытые узлы, а справа - выходные узлы.

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

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

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

От синапсов к соединениям

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


Как вы можете видеть, вес соединения «B» выше, чем у соединения «A» и «C». Скажем, скрытый узел «4» сработает, только если он получает общий ввод «2» или больше. Это означает, что если «1» или «3» сработают по отдельности, то «4» не сработает, но «1» и «3» вместе вызовут узел. Узел «2» также может инициировать узел самостоятельно через соединение «B».

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

Используя вышеприведенные соединения и вес, узел 4 может срабатывать только в том случае, если температура ниже -18 С и ветер выше 48 км/с, или он будет срабатывать, если вероятность снега превышает 70 процентов. Температура будет подаваться в узел 1, ветры к узлу 3 и вероятность попадания снега в узел 2. Теперь узел 4 может учитывать все это при определении того, какой сигнал следует отправить на выходной слой.

Лучше, чем простая логика

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


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

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


Исправление ошибки

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

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

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

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

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

Постоянное улучшение

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

Это может быть так же просто, как распознавание образов или столь же сложным, как и игра CS: GO.

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

В дополнение к описанному выше процессу, который называется контролируемым обучением, существует еще один метод: неконтролируемое обучение.

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

Вопросы глубины

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

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


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

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

Приложения нейронной сети

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

Для чего мы можем использовать эти увлекательные системы?

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

Поэтому, когда вы говорите, «ОК, Google», ваш iPhone прогоняет вашу речь через нейронную сеть, чтобы понять, что вы говорите. Возможно, существует еще одна нейронная сеть, которая учится предсказывать то, о чем вы, вероятно, попросите.

Самоходные автомобили могут использовать нейронные сети для обработки визуальных данных, тем самым следуя дорожным правилам и избегая столкновений. Роботы всех типов могут извлечь выгоду из нейронных сетей, которые помогают им учиться эффективно выполнять задачи. Компьютеры могут научиться играть в такие игры, как шахматы или CS: GO. Если вы когда-либо общались с чат-ботом, есть шанс, что он использует нейронную сеть, чтобы предложить соответствующие ответы.

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

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

Будущее нейронных сетей

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

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

Знаете ли вы какие-либо интересные применения нейронных сетей? У вас есть опыт работы с ними самостоятельно? Что вас больше всего привлекает в этой технологии? Поделитесь своими мыслями в комментариях ниже!

В 2016 году Интернет разразился новой волной хайпа – на этот раз предметом для бурных обсуждений в соцсетях стал проект Deep Dream, выпущенный в широкий доступ программистами Google. Deep Dream дает возможность каждому желающему загрузить собственное фото для обработки искусственным интеллектом.

На выходе пользователь получает картинку такой, какой её «видят» нейронные сети. Как это работает и что такое MNIST? Сегодня мы расскажем вам базовые принципы работы искусственного интеллекта.

Экскурс в биологию

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

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

Огромную роль в правильном определении образов играет первичное обучение, которое все дети проходят еще в несознательном возрасте. Например, при виде незнакомого животного родители объясняют, что это собака, а не любое другое существо. В следующий раз мозг ребенка сразу же узнает собаку на фоне других объектов. Так, на протяжении всей жизни, после миллионов увиденных картин оттачиваются способности узнавать и обрабатывать нужную информацию. Для искусственного интеллекта в качестве примеров применяются базы данных изображений, например, MNIST.

Что такое искусственная нейронная сеть?

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

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

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

Что внутри?

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

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

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

Машинное обучение

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

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

Однако в некоторых случаях «неправильные учебники» могут свести на нет все старания разработчиков. Скудный набор однообразных картинок приведет к тому, что программа попросту «зазубрит» нужные определения для каждого изображения и не будет анализировать его мельчайшие детали. Специально для таких целей существует база MNIST (Mixed National Institute of Standards and Technology). Она включает в себя десятки стандартизированных образцов рукописных цифр на изображениях размером 28х28 пикселей.

MNIST полностью открыта для использования, каждый желающий разработчик может проверить работоспособность своей нейронной сети по базе. Кроме MNIST можно воспользоваться базой ImageNet от Стэнфордского университета. Она включает в себя около 14 млн. изображений разного формата.

Виды нейронных сетей

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

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

Цель и сфера применения

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

  • Классификация – распределение большого массива данных исходя из определенных параметров. Например, программа может решить, кому из клиентов банка выдавать кредит, основываясь на их платежеспособности и кредитной истории;
  • Прогнозирование – предсказание исхода событий с некой долей вероятности. Например, сколько будет стоить пакет акций на фондовом рынке;
  • Распознавание – выявление определенных объектов на фото или видео. Простейший примеравтоматическое определение лица в камере смартфона.

Пока приложения для украшения селфи и сервисы поиска людей по одной фотографии остаются единственными сферами использования нейронных сетей. Однако Vinci, Snapchat или FaceApp – всего лишь вершина айсберга. ИНС могут дать значительный импульс для автоматизации транспортной, финансовой, развлекательной и других сфер. Благодаря искусственному интеллекту в скором времени можно будет избавиться от монотонного человеческого труда.

Более того, даже творчество можно поставить на поток. Усилиями разработчиков «Яндекса» появился первый музыкальный альбом «404», записанный нейронной сетью. Альбом стал первым сборником несуществующей группы Нейронная Оборона, основанной на стиле текстов Егора Летова.

ИНС могут стать отправной точкой для дальнейшего развития ассистентов вроде Siri или Cortana. Уже сейчас такие системы могут поддержать простой разговор и ответить на нужный запрос пользователя. Сервис Deep Dream, запустивший бум вокруг нейронных сетей в 2016 году является побочным продуктом от разработчиков Google. На примере обработанных им фотографий можно представить, как машина видит то или иное изображение своим «мозгом». Конечно, пока неразборчивые сплетения больше похожи на негативное воздействие психоделических наркотиков. Тем не менее это уже первый серьезный шаг на пути к полноценному искусственному интеллекту.


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


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

Немного истории

Впервые понятие искусственных нейронных сетей (ИНС) возникло при попытке смоделировать процессы головного мозга. Первым серьезным прорывом в этой сфере можно считать создание модели нейронных сетей МакКаллока-Питтса в 1943 году. Учеными впервые была разработана модель искусственного нейрона. Ими также была предложена конструкция сети из этих элементов для выполнения логических операций. Но самое главное, учеными было доказано, что подобная сеть способна обучаться.

Следующим важным шагом стала разработка Дональдом Хеббом первого алгоритма вычисления ИНС в 1949 году, который стал основополагающем на несколько последующих десятилетий. В 1958 году Фрэнком Розенблаттом был разработан парцептрон - система, имитирующая процессы головного мозга. В свое время технология не имела аналогов и до сих пор является основополагающей в нейронных сетях. В 1986 году практически одновременно, независимо друг от друга американскими и советскими учеными был существенно доработан основополагающий метод обучения многослойного перцептрона . В 2007 году нейронные сети перенесли второе рождение. Британский информатик Джеффри Хинтоном впервые разработал алгоритм глубокого обучения многослойных нейронных сетей, который сейчас, например, используется для работы беспилотных автомобилей.

Коротко о главном

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

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

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

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

Сегодняшнее положение

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

На сегодняшний день рынок нейронных сетей огромен - это миллиарды и миллиарды долларов. Как показывает практика, большинство технологий нейросетей по всему миру мало отличаются друг от друга. Однако применение нейросетей - это очень затратное занятие, которое в большинстве случаев могут позволить себе только крупные компании. Для разработки, обучения и тестирования нейронных сетей требуются большие вычислительные мощности, очевидно, что этого в достатке имеется у крупных игроков на рынке ИТ. Среди основных компаний, ведущих разработки в этой области можно отметить подразделение Google DeepMind, подразделение Microsoft Research, компании IBM, Facebook и Baidu.

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

Почему нейросети еще далеки до человеческого мозга?

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

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

Итог

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

Для тех, кто хочет знать больше

  • Большая нейронная война: что на самом деле затевает Google
  • Как когнитивные компьютеры могут изменить наше будущее


Загрузка...
Top