science_power (science_power) wrote,
science_power
science_power

Categories:

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

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

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

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

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

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

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

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

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

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

X1*W1 + X2*W2 + X3*W3 = Y.



То есть нейрону дают несколько чисел, а он их суммирует с определенными коэффициентами (весами). Числа отражают какие-нибудь характеристики данных. Как такое может нам помочь?

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

Пол М/Ж = 0/1
Возраст = годы
Место жительства = почтовый индекс.
Доход = сумма денег
Голосовал ранее за демократа или республиканца (0/1)

Можно добавить любые другие параметры, главное, чтобы они выражались числами. Например, владеет ли автомобилем (0/1), женат-холост-разведен-вдовец (0-1-2-3), и так далее. Соберем такие данные за прошлые годы.

Теперь построим, собственно, нейронную сеть.




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

Модное слово Deep Learning означает, что в сети есть более, чем два слоя (то бишь есть оные hidden). И как же это все предсказывает? В начале никак. Параметры (веса Wi) в каждом нейроне вначале равны единице. И результат предсказания получается совершенно от балды. Что же делать? Пришло время обучения!

Берем результаты предыдущего голосования и делим набор данных пополам. Берем параметры первого избирателя и посылаем их в сетку. Она отвечает, допустим, 0 (демократ). Если персонаж действительно голосовал за демократов, очень хорошо. Если же нет, надо поправить эти самые Wi в нейронах. Не будем углубляться в математику, кому интересно, есть, например, метод обратного распространения ошибки. Но не суть. Важно то, что есть методы, которые позволяют сказать нейронной сети, что нет, ответ не 0, а 1. И сеть поправит внутри себя веса Wi, и ответ станет правильный - для данного человека. Теперь повторяем сие много-много раз. Это и есть обучение.

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

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



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

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

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic
  • 11 comments