ИИ за вечер - читать онлайн бесплатно, автор Сергей Лопонос, ЛитПортал
На страницу:
2 из 2
Настройки чтения
Размер шрифта
Высота строк
Поля

Тогда можно сказать: VIP-браслет важнее билета. А если человек говорит: «Меня сюда директор пригласил». Тут уже начинается самое интересное. Охранник может решить, что это очень важная информация. А может ответить: «Конечно. Директор каждый вечер лично встречает гостей у входа».

У каждого сигнала есть свой вес

Представим, что охранник оценивает четыре признака.

Билет: +5

VIP-браслет: +10

Знание пароля: +7

Попытка пролезть без очереди: −8 Почему разные числа? Потому что признаки имеют разную важность. VIP-браслет может быть очень убедительным аргументом. А вот то, что человек стоит в очереди, само по себе почти ничего не говорит.

Эти коэффициенты и напоминают то, что в нейронной сети называют весами. Вес показывает, насколько сильно определённый вход влияет на результат.

Теперь немного математики

Представим, что у нас есть три входа: x₁, x₂, x₃ И три соответствующих веса: w₁, w₂, w₃ Нейрон сначала перемножает каждый вход на его вес:

x₁ × w₁

x₂ × w₂

x₃ × w₃

А потом складывает результаты:

x₁w₁ + x₂w₂ + x₃w₃

И к этому может добавиться ещё одно число — смещение, или bias. Получаем:

z = x₁w₁ + x₂w₂ + x₃w₃ + b

Вот и почти весь секрет нашего маленького нейрона. Да, серьёзно. Выглядит скромно. А потом из миллиардов подобных математических операций получается ChatGPT. Иногда полезно вспомнить об этом, когда кажется, что искусственный интеллект — это какая-то сверхъестественная технология.

В основе всё ещё сидит арифметика. Просто арифметики стало очень много.

А что такое bias? Смещение, или bias, можно представить как начальную установку. Например, наш охранник по умолчанию никого не пускает. Чтобы пройти, нужно набрать определённое количество баллов. Это и есть примерно такая идея.

Допустим, у нас есть:

билет = 1

VIP = 1

пароль = 1

А веса:

билет = 2

VIP = 5

пароль = 3

И пусть порог равен 5. Если человек имеет билет и знает пароль:

2 + 3 = 5

Проходите. Если только билет:

2

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

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

Но важно не перепутать: искусственный нейрон — это не маленькая копия настоящего нейрона. Это скорее математическая карикатура. Как рисунок человека из палочек. Есть голова. Есть руки.

Есть ноги. Но если попытаться устроиться на работу по такому анатомическому портрету, кадровик может немного удивиться.

А теперь самое важное — решение

Мы получили число. Допустим:

z = 4,7

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

Функция активации отвечает примерно на вопрос:

«Что делать с полученным числом дальше?»

В старых и простых моделях можно было сделать совсем примитивно: Если значение выше порога — 1.


Если ниже — 0. Получается что-то вроде выключателя. Щёлк.

Да.

Нет.

Да.

Нет.

Очень интеллектуально.

Но такой выключатель слишком грубый

Представим:

4,99 — нет

5,01 — да

Хотя значения практически одинаковые. Современные нейронные сети используют более гибкие функции активации. Например, очень известную ReLU. Она делает почти смешную вещь: если число отрицательное — превращаем его в ноль;


если положительное — оставляем как есть.

То есть: −7 — 0 −1 — 0 0 — 0 3 — 3 12 — 12 На первый взгляд кажется:

«И это всё?»

Да.

Но именно из таких простых операций строятся огромные вычислительные системы.

Один нейрон — почти бесполезен

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

размер; несколько других чисел. И попросить:

«Кошка или не кошка?»

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

Один охранник — хорошо. А если их тысяча? Представим огромный клуб. На входе стоит не один охранник, а целая система контроля. Первый смотрит на билет.

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

Каждый получает определённые сигналы. Каждый выдаёт свой результат. Эти результаты поступают дальше. Следующая группа охранников уже оценивает комбинации признаков. Например:

«Есть билет + знакомое лицо + VIP-браслет».

Ещё дальше другой уровень может сказать: «Похоже, это действительно тот человек, которого мы ожидали». Это уже похоже на слоистую нейронную сеть.

От простого к сложному

Именно здесь появляется одна из самых красивых идей нейронных сетей. Ранние слои могут обнаруживать простые закономерности. Например, на фотографии: границы; линии; контрасты; простые формы. Следующие слои могут объединять их:

круг; угол; изгиб; текстура. Ещё дальше: глаз; ухо; нос; лапа. А ещё дальше: Кошка. Получается своеобразная лестница. Простые признаки — более сложные признаки — объект.

И это очень мощная идея.

Представим фотографию

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

Следующий — более сложные. Следующий — ещё более сложные. И где-то глубоко внутри огромной сети появляются закономерности, которые помогают сделать вывод: Это кот. Причём мы не обязаны вручную говорить каждому нейрону: «Ты отвечаешь за левое ухо».

«Ты — за правый глаз». «Ты — за пушистость». В процессе обучения сеть сама подстраивает свои веса.

И вот мы возвращаемся к прошлой главе

Помните огромный пульт с миллионами ручек? Вот эти ручки и есть наши параметры. Веса. Смещения. Другие числовые настройки.

В начале обучения они не настроены так, чтобы давать хорошие ответы. Система делает прогноз. Ошибается. Вычисляет ошибку. А затем корректирует параметры.

И снова запускает вычисление. Получается цикл: вход — нейроны — ответ — ошибка — изменение весов — новый ответ. Так постепенно сеть настраивается.

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

Это очень важно. Каждый следующий слой получает всё более обработанное представление. Условно: пиксели — линии — формы — части объектов — объекты — смысловая информация Разумеется, реальная нейросеть не устроена настолько аккуратно и красиво.

Внутри нет маленького отдела: «Господа, сегодня распознаём левое ухо». Но такая картинка помогает понять общий принцип.

А что будет, если нейронов станет очень много? Тогда количество вычислений начинает расти невероятно быстро. Представьте: один нейрон выполняет несколько операций; тысяча нейронов — тысячи; миллион — миллионы. А если у нас много слоёв?

Тогда данные проходят через огромное количество вычислительных операций. И если добавить огромное количество параметров и огромные объёмы данных, получаются современные нейронные сети. Но возникает вопрос: кто будет всё это считать?

Человеческий мозг?

Нет.

Он и так занят тем, чтобы вспомнить, зачем вы только что открыли холодильник. Нужны компьютеры. Причём очень мощные.

Почему здесь нужны видеокарты? Вот тут происходит ещё одна интересная вещь. Для обучения нейросетей нужно выполнять огромное количество похожих математических операций. А графические процессоры — GPU — как раз отлично подходят для массовых параллельных вычислений.

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

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

Самое удивительное — нейрон не знает, что он делает

Это стоит запомнить. Когда нейросеть распознаёт кошку, внутри нет отдельного нейрона с табличкой:

«ОТВЕТСТВЕННЫЙ ЗА КОШЕК»

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

Именно это одна из самых важных идей всей книги.

А теперь попробуем собрать всё вместе

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

Получившиеся значения идут дальше. Следующий слой снова что-то считает. И следующий. И следующий. В конце сеть выдаёт результат.

Например:

Кошка — 0,97

Собака — 0,02

Автомобиль — 0,01

Получается, что нейросеть не «смотрит» на фотографию в человеческом смысле. Она пропускает через себя огромную цепочку математических преобразований. А на выходе получается число, которое можно интерпретировать как прогноз.

И вот здесь появляется очень важная мысль

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

Это примерно как если бы вы узнали, что самый маленький кирпичик небоскрёба — обычный кусок бетона. Сам по себе он ничего особенного. Но попробуйте собрать из них стоэтажное здание.

И всё-таки одного кирпичика мало

Мы уже знаем, из чего состоит отдельный нейрон. Знаем, что у него есть входы, веса, смещение и выход. Знаем, что нейроны можно объединять в слои. Знаем, что во время обучения их параметры постепенно изменяются. Но остаётся главный вопрос:

как из этой огромной системы получается способность решать сложные задачи? Почему одни слои могут обнаруживать простые закономерности, а другие — гораздо более сложные? Как сеть понимает, какие признаки важны? И главное:

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

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

Глава 4. Нейронная сеть — когда один нейрон уже не справляется

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


Каждому числу назначается свой вес.


Всё это складывается, пропускается через функцию активации — и получается результат.

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

Но просто свалить миллион нейронов в одну кучу недостаточно. Нужна структура. И вот тут появляется нейронная сеть.

Представьте фабрику

Представим огромную фабрику. На вход приезжает машина с деталями. Первый цех смотрит на самые простые свойства:

— размер такой;


— форма такая;


— поверхность такая.

После обработки детали отправляются во второй цех. Там уже смотрят:

— эти две детали соединяются;


— здесь получается узел;


— тут есть характерная форма.

Потом третий цех:

— похоже на двигатель.

Четвёртый:

— нет, не просто двигатель, а двигатель определённого типа.

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

Слои: этажи нейронной сети

Нейроны объединяют в группы, которые называют слоями. Самая простая схема выглядит примерно так: вход — слой нейронов — слой нейронов — слой нейронов — выход Можно представить многоэтажное здание. На первом этаже информация только поступила.

На втором её немного обработали. На третьем обработали ещё сильнее. И так далее. В результате на последнем этаже принимается решение. Конечно, настоящая нейронная сеть устроена гораздо сложнее, чем офисное здание.

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

А что именно происходит с информацией? Возьмём фотографию кота. Для человека всё очевидно. Мы смотрим: «Кот. Ну кот и кот».

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

12,18,24,240,197,103...

И таких чисел может быть миллионы. Первый слой получает эту кашу из чисел и начинает искать простейшие закономерности. Например:

— здесь есть граница между светлым и тёмным;


— здесь линия идёт примерно под таким углом;


— здесь меняется цвет.

Сам по себе такой признак ещё ничего не означает. Линия — это просто линия. Но дальше становится интереснее.

От линий к коту

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

глаз. Другой — на: ухо. Ещё один может обнаружить: морду. А следующий начинает видеть сочетание:

два глаза + уши + характерная форма головы + шерсть.

И где-то в конце сети появляется очень полезный результат: «Похоже, это кот». Причём никто не сидел внутри компьютера и не писал: Если есть два глаза, два уха, нос и шерсть — объявить кота. Система сама во время обучения настраивает огромное количество параметров так, чтобы постепенно научиться выделять полезные признаки.

И вот здесь мы возвращаемся к предыдущей главе.

Сеть не знает, что такое «ухо»

Это очень важный момент. Когда мы говорим:

«Первый слой распознаёт линии, второй — формы, третий — глаза...»

это удобное объяснение. Но не нужно представлять, что внутри сети действительно сидят аккуратные таблички: Нейрон №1847 — отвечает за левое ухо кота. Так обычно не работает. В реальной сети информация распределена гораздо сложнее.

Один и тот же нейрон может участвовать в обнаружении нескольких разных признаков. А один сложный признак может зависеть от работы огромного количества нейронов. Это больше похоже на оркестр. Скрипач №17 не является «ответственным за грусть».

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

А где здесь обучение? Вот теперь можно соединить две предыдущие главы. У нас есть нейроны. Мы соединили их в сеть. Между нейронами есть связи.

А у каждой связи есть свой вес. И вот этих весов становится очень много. Очень. Если в маленькой сети несколько тысяч параметров, это уже немало. В современной большой модели их могут быть миллиарды и больше.

И каждый такой параметр — маленькая настройка. Можно снова вспомнить огромную панель управления с ручками. Только теперь ручек не десять. И не тысяча. А миллионы или миллиарды.

Конец ознакомительного фрагмента.

Текст предоставлен ООО «Литрес».

Прочитайте эту книгу целиком, купив полную легальную версию на Литрес.

Безопасно оплатить книгу можно банковской картой Visa, MasterCard, Maestro, со счета мобильного телефона, с платежного терминала, в салоне МТС или Связной, через PayPal, WebMoney, Яндекс.Деньги, QIWI Кошелек, бонусными картами или другим удобным Вам способом.

Вы ознакомились с фрагментом книги.
Приобретайте полный текст книги у нашего партнера:
На страницу:
2 из 2