Кремниевые формы жизни

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

Шо?

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

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

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

  • Есть стрёмная клетка - нейрон
  • Из нейрона растут не менее стрёмные отростки - дендриты
  • Дендриты разных нейронов могут соприкасаться и срастаться друг с другом, образовывая связи, которые называются синапсами.
  • Через синапсы один нейрон может долбить другой с помощью всякой химии - нейромедиаторов
  • После получения критической массы нейромедиаторов (которая зависит от кучи факторов) нейрон может психануть и послать электрический импульс и пачку нейромедиаторов далее по своим синапсам.

Естественно этот процесс происходит не хаотично, а по определённым правилам. Давайте посмотрим на математическую модель нейрона на картинке ниже.

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

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

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

  • Координаты x, y, z
  • Цвет в виде трёх составляющих (красный, зелёный, синий) в формате rgb( 255, 124, 34 ) где каждый цвет - это число в диапазоне 0 - 255
  • Буквально что угодно, лишь бы хватило фантазии и знаний в математике, чтобы превратить данные в числа

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

Сумматор - очень тупая часть. Всё что он делает это суммирует все пришедшие сигналы и итоговый результат скармливает на вход функции активации. Проще говоря из большого набора x1, x2, x3... делает один X простым сложением.

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

Сигмоид

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

Перцептрон

Зелёные кружки - два нейрона на входном слое. Синими кружками обозначены нейроны скрытого слоя и желтым - нейрон выходного слоя. Такая сеть способна справиться с задачей распознавания образов и классификации. Например отличать круги от квадратов и треугольников в простом случае, или отличить яблоко от моркови в более сложном. НО! Важный момент - всё зависит от данных на которые вы натренируете вашу сеть. То есть сеть, натренированная отличать яблоко от моркови уже не будет способна распознать тыкву, и если вы скормите ей изображение тыквы - то получите малопредсказуемый результат, но ответ будет либо "яблоко", либо "морковь". Смекаете?

Как же происходит тренировка нейронной сети? Для любопытных оставлю ссылку на довольно подробную статью из википедии. Вкратце опишу пример метода "обучения с учителем". На вход нейронной сети подаётся набор данных (чем больше и разнообразнее - тем лучше), а на выходе для каждого набора данных сообщается ответ, который ожидается в данном случае. Запускается процесс обработки сетью входящих данных, нейронная сеть выдаёт ответ и сравнивает его с ожидаемым. Если ответы не сошлись - запускается метод обратного распространения ошибки (математика делает магию) и веса всех синапсов в сети изменяются, после чего процесс повторяется. Грубо процесс можно описать следующим образом:

  • Показали сети яблоко
  • Сеть: "Это морковь?"
  • Вы: "Неправильно, начинай сначала"
  • Сеть: *меняет веса синапсов* "Это морковь?"
  • ...
  • Сеть *меняет веса синапсов в 100000-й раз "Это яблоко"
  • Вы: "Отлично, а теперь то же самое провернём для моркови"

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

Рассмотрим ещё один пример искусственного интелекта.

Нечёткая логика (англ. fuzzy logic) ссылка с подробностями тут. Здесь всё происходит ещё проще. В отличии от строгой логики, у которой есть два состояния "Правда" и "Ложь" (0 и 1 в числах) - в нечёткой логике вы сами задаёте правила, по которым ваша система будет принимать решение о классификации. Рассмотрим пример с температурой.

На графике мы видим три графика функций. Каждая из функций задаётся математической формулой. На вход подаётся значение температуры. На выходе мы получаем ответ в виде слова "холодно", "тепло" или "жарко". Меняя параметры каждой из функций вы изначально определяете какой диапазон температур будет определяться как "холодно" а какой как "жарко". Никакого обучения, никакой магии. Что накрутил - то и получил. Однако в силу того, что у вс��х функций переходы от одного состояния к другому не резкие мы получаем большую гибкость настройки подобных систем. Цитата:

Вместо традиционных значений Истина и Ложь в нечёткой логике используется более широкий диапазон значений, среди которых Истина, Ложь, Возможно, Иногда, Не помню, Как бы Да, Почему бы и Нет, Ещё не решил, Не скажу…. Нечёткая логика просто незаменима в тех случаях, когда на поставленный вопрос нет чёткого ответа ( да или нет; «0» или «1») или наперёд неизвестны все возможные ситуации.

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

  • Распознавание образов и классификация
  • Принятие решений и управление
  • Кластеризация
  • Прогнозирование
  • Аппроксимация
  • Сжатие данных и ассоциативная память
  • Анализ данных
  • Оптимизация

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


Стоит сделать оговорку, что для каждой задачи приходится создавать, налаживать, обучать и оптимизировать отдельную нейронную сеть, что с одной стороны требует человеческих ресурсов а с другой - нетривиальных вычислительных мощностей. То есть сеть, которая может распознавать лица людей на фотографиях будет не способна отличить мяч от камня. Гуглобаба из вашего смартфона может распознать вашу речь, и даже установить для вас будильник на нужное время, но попросите её выключить все будильники - и вы сразу увидите тупое следование алгоритму - вместо того чтобы выключить их все сразу она покажет вам список и предложит выбрать нужный, и лишь следующим шагом вы сможете дать ей инструкцию ALL. А включить все будильники разом она и вовсе не способна. Думаю очевидно, что для создания "многозадачных" систем создаются наборы сетей, заточенных под одну узкую задачу, которые затем обьединяются в единое целое. Одна распознаёт речь и преобразует её в текст, другая на основе полученного текста пытается понять что же требуется сделать и так далее. Создать и обучить одну нейронную сеть уже не простая задача, что уж говорить о подобных модульных системах.

Казалось бы, при чём тут киборги?

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

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

Сложные многослойные нейронные сети демонстрируют поистине потрясающие результаты, распознавая речь, рукописный текст или генерируя контент в твиттер (ИИ твиттер Рамзана Кадырова, Дональда Трампа, их легион), однако не смотря на это они всё ещё остаются не более чем математическими моделями, созданными человеком. Третий закон Кларка гласит:

Любая достаточно развитая технология неотличима от магии.

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

Так возможно ли создание достаточно сложной системы, которая бы была практически неотличима от человека? Безусловно да, рабочие прототипы уже были продемонстрированы широкой публике, а одна даже ездит с гастролями и даёт интервью. С переменным успехом нам постоянно показывают роботов, способных поддерживать беседу уровня /b на уровне туповатого человека.

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

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

Главное отличие сегодняшнего ИИ от человека заключается в природе его ошибок. Человеку свойственно забывать, не замечать каких-то деталей, принимать спонтанные решения, которые приводят к "нежелательным результатам". Когда же речь идёт об искусственных системах - ни о чём подобном речи быть не может. Машина не действует спонтанно, ничего не упускает, ничего не забывает, ничего не прощает. Все её действия, все сценарии поведения строго определены создателем и не могут выйти за рамки алгоритма без помощи извне.

Что насчёт сумасшедшего гения?

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

А теперь давайте вспомним всё о чём мы говорили ранее и подведем итоги:

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

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

В конце концов, ничто в мире не угрожает нам больше нас самих.

Не опасайтесь машин, опасайтесь людей.

Любите маму, мойте руки мылом.