Найти в Дзене
Цифровые мозги

Нейронные сети: мухи отдельно, котлеты отдельно

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

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

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

Давайте посмотрим на схему небольшой нейронной сети.

Рисунок 1: схема простой нейронной сети
Рисунок 1: схема простой нейронной сети

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

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

Для простоты, пусть наши картинки будут размером 3x3 пикселя. Понятно, что при таком разрешении, в реальности, невозможно ничего изобразить и разобрать, но для понимания принципа работы нейронок, нам будет достаточно.

Рисунок 2: пример изображения мухи и котлетки (цифрами пронумерованы пиксели)
Рисунок 2: пример изображения мухи и котлетки (цифрами пронумерованы пиксели)

Итак, каждое наше изображение состоит из девяти пикселей. А что такое пиксель? По сути это точка определенного цвета. А цвет можно закодировать – представить в виде числа. Например, черный – это 0, а белый – 1. Таким образом, 0.5 – это серый (среднее между черным и белым). Чем больше число к нулю – тем чернее будет пиксель, а чем ближе к единице – тем пиксель белее. Принцип понятен? И да, цветные картинки тоже можно легко закодировать, но сейчас не об этом.

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

Сразу обратите внимание, как нейросеть «смотрит» на изображение. Для нас это квадратик, а для нее это просто линия.

Рисунок 3: муха и котлетка в развертке
Рисунок 3: муха и котлетка в развертке

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

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

Ну, давайте уже «покажем» нейронной сети наши картинки.

Рисунок 4: подаем на вход нейросети муху – активируется первый нейрон в выходном слое
Рисунок 4: подаем на вход нейросети муху – активируется первый нейрон в выходном слое

Рисунок 5: подаем на вход нейросети котлетку – активируется второй нейрон выходного слоя.
Рисунок 5: подаем на вход нейросети котлетку – активируется второй нейрон выходного слоя.

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

На этом этапе уже возникает множество вопросов.

Во-первых, что значит «нейрон активируется»?

Более подробно про активацию нейронов мы поговорим в следующих статьях. А пока будем считать, что если на выходе нейрона мы получаем число ноль – то нейрон «спит», а если единицу – «активируется».

Во-вторых, как нейросеть, получив какие-то числа на нейроны входного слоя, определяет, что нужно выдать ноль и единицу на определенных нейронах выходного слоя? Что за «магия» происходит в этих скрытых слоях?

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

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

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

Представьте, сколько входных нейронов необходимо, чтобы «скормить» нейронке всего лишь один кард фильма в современном FullHD формате? Это 1920x1080= 2 073 600 нейронов! Да, и на выходе тоже не всегда достаточно двух нейронов.

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

-7

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

Дзен-канал "Цифровые мозги". Все об искусственном интеллекте, нейронных сетях и технологиях будущего.
Дзен-канал "Цифровые мозги". Все об искусственном интеллекте, нейронных сетях и технологиях будущего.