Найти в Дзене
ИИ простыми словами

Инференс - новое слово в русском языке.

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

Сегодня мы продолжим решать "основную задачу искусственного интеллекта" - распознавание кисок и собачек и узнаем несколько новых слов :) Я не случайно начал с задач распознавания - исторически именно к таким вопросам люди и начали приспосабливать "искусственный разум". В одной из предыдущих глав мы познакомились с моделью работы одного нейрона и узнали, что он способен кое чего различать. Однако, там же было указано, что далеко не со всеми случаями распознавания он способен справиться. Но там где один (нейрон) оказывается в поле не воин, многослойные сети решают задачу. Так как же они устроены?

Давайте для начала возьмем пример прошлого раза, где нам надо установить есть ли на картинке киска. Например, вот на такой :)

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

-2

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

Ну а последний нейрон на основании сформированных признаков принимает решение -киска перед нами или все-таки нет. И заметьте -это тот же самый нейрон, который мы рассматривали в предыдущей главе! И он задает то же самое линейное разделение в "плоскости признаков"

-3

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

Хорошо, скажете вы, а можно ли сделать так, чтоб наша сеть распознавала и кисок и собачек? Легко, и для этого нам даже почти не нужно ничего менять.

-4

Мы просто добавили еще один выходной нейрон, который отвечает за распознавание собак. Вообще-то никто не заставляет использовать для распознавания собак те же самые признаки "круглая мордочка" и "хвост крючком". Но никто и не мешает! А поэтому давайте возьмем их же. Однако, для нейрона, который определяет собак веса этих признаков уже будут другие. Возьмем w1 = 0.2 (животное с круглой мордочкой изредка может оказаться собакой), w2 = 0.8 (если хвост крючком - это собака почти наверняка). Также зададим смещение равное - 0.4. Таким образом получим следующее неравенство

0.2*x1 +0.8x*2 - 0.4>=0

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

-5

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

-6

Мы же не научили нашу нейросеть тому, что котопсов в природе не бывает! :)

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

-7

И тут нам на помощь снова приходит многослойность. Давайте, возьмем ни один нейрон, а, скажем, семь.

-8

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

-9

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

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

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

Оставайтесь со мной.