Главная/ Блог / Нейросети Часть 1

Заменят ли нас нейронные сети?

[ Нейросети Часть 1 ]

Заменят ли нас нейронные сети?

Smartiqa Article
Дата: 10 октября 2020
Автор: Даниил Калинин

Этот материал относится к циклу статей о нейронных сетях


Как нейронные сети получили свое название, из каких компонентов они состоят, как они обучаются и главное - являются ли они полноценным искусственным интеллектом, способным заменить человека?

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

В статье рассказывается о принципе работы сверточных нейронных сетей

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

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

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

Почему «нейронная» сеть?

Начать, пожалуй, стоит с названия: слово «нейронная» было выбрано не просто так. По сути главная идея нейросетей была взята из устройства нашего мозга. Этот орган состоит из миллиардов переплетений клеток, которые называют нейронами.
Нейроны нужны, чтобы обмениваться сигналами: например, если уколоть палец иголкой, то нейроны в пальце передадут сигнал мышцам пальца, а мышцы пальца сократятся, чтобы убрать палец из-под иглы.

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

Читайте также

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

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

Разберемся подробнее в схеме. Тело искусственного нейрона состоит из сумматора и функции активации. Сумматор умножает каждые данные на «вес связи», а затем складывает их все: Вес связи – это некоторое число обычно от 0 до 1, которое определяет, насколько вошедшие данные важны для нейрона. Функция активации работает следующим образом: если значение, полученное сумматором больше некоторого постоянного (например, 15), то сигнал передается дальше, а если нет – нейрон затухает, не передавая сигнал дальше.

Больше нейронов!

Нейронные сети – это просто множество таких вот нейронов, связанных между собой. Первый нейрон получает некоторые входные данные от пользователя и отдает результат второму нейрону (или затухает), второй – третьему, и так далее. А результат работы последнего нейрона – это ответ нейросети.
Схематическое изображение простейшей нс
Схематическое изображение простейшей нс
На рисунке изображена простейшая нейросеть, состоящая всего из трех нейронов. Такая нейросеть может, например, по температуре предсказывать вероятность дождя. Тогда «X» будет значением температуры, а «Y» — вероятностью дождя. В каждом из нейронов полученный вход умножается на соответствующий вес связи, а затем загоняется в функцию активации φ, которая определяет, пройдет ли сигнал с нейрона дальше.

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

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

Чему учится сеть

Внимательный читатель спросит: «Но почему нейронные сети – это алгоритмы машинного обучения, кто кого учит, и где здесь вообще обучение? Помните те веса связи, определяющие «важность» определенных данных? Они обозначались как w1, w2 и так далее. Изначально они заданы случайными числами: нейросеть не знает, данные с какого входа важнее, а суть обучения состоит в том, чтобы настроить эти веса. Но настраивает эти параметры, конечно же не человек, а сама нейросеть. Есть много способов настроить эти веса, мы рассмотрим алгоритм обучения с учителем.

Обучение с учителем

Обучение с учителем – это обучение на размеченных данных. То есть человек сам подготавливает для нейросети входные данные и говорит, что он хочет увидеть. Например, пара данные-ответ для примера про вероятность дождя выглядела бы так: (влажность: 30%, давление: 750 мм. рт. ст., температура: 20 Цельсия, вероятность дождя: 40%, вероятность шторма: 5%). Здесь первые три значения – входные данные, а последние два – выходные.

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

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

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

Нейросеть лучше человека?

Таким образом, нейросеть – не что иное, как способ найти зависимость между входными данными и результатом. Алгоритм сам определяет, как менять веса, чтобы его ошибка стала меньше, обучаясь и все точнее воспроизводя исходную зависимость. И пусть на сегодняшний день существует множество вариаций нейронных сетей: полносвязные, рекуррентные, сверточные, сети с пробросом градиента, генеративно-состязательные модели и большое количество других – все они предназначены для восстановления исходной зависимости между входными данным и результатом.
Поэтому ни один существующий на сегодняшний день алгоритм машинного обучения нельзя назвать сильным искусственным интеллектом, то есть таким, который может мыслить, понимать собственные мысли и осознавать себя. Может нейросети и превосходят человека в некоторых задачах (игра в Go, соревнование ImageNet и так далее), но до нашей способности творческого мышления им еще очень и очень далеко.
10 ОКТЯБРЯ / 2020
Как вам материал?

Читайте также