Skip to content
Get App

Нейросети: #1. Глубокое обучение I [3Blue1Brown]

Вводный курс по нейросетям от 3Blue1Brown: как устроены нейроны, слои и почему сеть способна распознавать рукописные цифры 28×28 пикселей.

Key Takeaways

  • Нейросеть — это многослойная структура, где активации нейронов передаются от слоя к слою
  • Скрытые слои, теоретически, учатся распознавать промежуточные признаки изображения
  • Ручная настройка всех параметров невозможна, поэтому нужен процесс обучения
  • Структура простой полносвязной сети служит основой для понимания более современных архитектур

What the video covers

  • Мозг легко распознаёт рукописную цифру даже в низком разрешении 28×28 пикселей, а для программы это сложная задача
  • Цель курса — объяснить с нуля структуру нейросетей и их работу с точки зрения математики
  • В первом видео рассматривается только структура сети, обучение разбирается в следующем
  • Пример: нейросеть для распознавания рукописных цифр, часто используемый учебный кейс
  • Нейрон — это число от 0 до 1 (активация); входной слой содержит 784 нейрона по одному на пиксель
  • Выходной слой содержит 10 нейронов, по одному на каждую цифру; наибольшая активация даёт ответ
  • Сеть имеет два скрытых слоя по 16 нейронов; число слоёв и нейронов — поле для экспериментов
  • Идея: скрытые слои распознают составные элементы — короткие линии, кружки, затем формы и цифры
  • Активации одного слоя определяют активации следующего; вопрос в правилах этого перехода
  • Веса и смещения (параметры) задают связи между нейронами и визуализируются как таблицы

Answers

Questions about this video

Почему для распознавания цифр используется изображение 28×28 пикселей?

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

Что такое активация нейрона?

Активация — это число от нуля до единицы, хранящееся в нейроне. Для входного слоя оно соответствует яркости пикселя, а для выходного показывает уверенность сети в конкретной цифре.

Зачем нужны скрытые слои?

Скрытые слои, как предполагается, распознают промежуточные элементы: короткие линии, кружки и их сочетания. Это помогает сети от пикселей прийти к конкретной цифре.

Full Transcript — Download SRT & Markdown

00:12
Speaker A
Это цифра три. Изображение нечёткое, в очень низком разрешении, всего 28 на 28 пикселей. Но мозг всё равно понимает, что это тройка. Вы только подумайте: мало того, что он с этим справляется, так ещё и безо всяких проблем.
00:30
Speaker A
тройки, несмотря на то, что изображения различаются, на экране горят разные пиксели. Да и у нас в глазах один набор светочувствительных клеток активируется, когда мы видим эту тройку, и совсем другой срабатывает, когда видим эту. Тем не менее, наша невероятно умная
00:47
Speaker A
Или вот тут, тут и тут мы тоже распознаём тройки, несмотря на то, что изображения различаются, на экране горят разные пиксели. Да и у нас в глазах один набор светочувствительных клеток активируется, когда мы видим эту тройку, и совсем другой срабатывает, когда видим эту. Тем не менее наша невероятно умная зрительная кора понимает, что эти изображения обозначают одно и то же. А вот это, например, совершенно разные цифры.
00:57
Speaker A
Теперь представьте, что вам надо написать программу, которая принимает на вход сетку 28 на28 пикселей, а на выходе сообщает вам, какую цифру вы, по её мнению, ей показали. Различать цифры вдруг становится очень сложной задачей.
01:15
Speaker A
Теперь представьте, что вам надо написать программу, которая принимает на вход сетку 28 на 28 пикселей, а на выходе сообщает вам, какую цифру вы, по её мнению, ей показали. Различать цифры вдруг становится очень сложной задачей.
01:23
Speaker A
Но в этом курсе я с нуля расскажу, что всё-таки нейросети представляют собой, и наглядно покажу, как они работают с точки зрения математики. Мне хочется, чтобы, посмотрев эти видео, вы поняли, какая у нейросетей логичная и ясная структура, и что подразумевается под
01:41
Speaker A
Сейчас только ленивый не рассказывает о машинном обучении, нейронных сетях и перспективах, которые они открывают. Но в этом курсе я с нуля расскажу, что всё-таки представляют собой нейросети, и наглядно покажу, как они работают с точки зрения математики. Мне хочется, чтобы, посмотрев эти видео, вы поняли, какая у нейросетей логичная и ясная структура и что подразумевается под словосочетанием «машинное обучение». В этом видео мы поговорим только о структуре сетей, а в следующем разберёмся с обучением. В качестве примера мы построим нейронную сеть, которая будет распознавать рукописные цифры.
01:57
Speaker A
С этого примера часто начинают знакомства с нейросетями. В описании к видео я оставил ссылки на ресурсы, которые позволяют получше ознакомиться с темой, а ещё на код самой модели, чтобы вы могли поэкспериментировать с ней самостоятельно.
02:13
Speaker A
С этого примера часто начинают знакомство с нейросетями. В описании к видео я оставил ссылки на ресурсы, которые позволяют получше ознакомиться с темой, а ещё на код самой модели, чтобы вы могли поэкспериментировать с ней самостоятельно.
02:32
Speaker A
современные варианты, но и в ней нам встретятся довольно сложные и неожиданные вещи. Несмотря на свою простоту, такая нейросеть может научиться распознавать рукописные цифры, что уже довольно неплохо.
02:45
Speaker A
Существует огромное количество разновидностей нейронных сетей, и в последние годы наблюдается настоящий бум исследований в этой области. Но в двух вводных видео мы рассмотрим самую простую базовую версию без усложнений и наворотов. Это основа, которая необходима, чтобы понять другие, более современные варианты, но и в ней нам встретятся довольно сложные и неожиданные вещи. Несмотря на свою простоту, такая нейросеть может научиться распознавать рукописные цифры, что уже довольно неплохо.
03:07
Speaker A
от нуля до единицы, и ничего больше. Например, один нейрон может представлять собой отдельный пиксель. Для изображения 2828, как в нашем случае, потребуется 784 нейрона. Каждый содержит число от нуля до единицы, и это число обозначает яркость пикселя. Причём ноль - это
03:30
Speaker A
Впрочем, как мы увидим, функционал модели несколько ограничен. Как можно догадаться, вдохновением для нейросетей послужил мозг. Но давайте разберёмся, что такое нейроны и как они связаны друг с другом. Пока что запомните: говоря «нейрон», я подразумеваю нечто, в чём хранится число в диапазоне от нуля до единицы, и ничего больше. Например, один нейрон может представлять собой отдельный пиксель. Для изображения 28 на 28, как в нашем случае, потребуется 784 нейрона. Каждый содержит число от нуля до единицы, и это число обозначает яркость пикселя. Причём ноль — это чёрный, а единица — белый. Число внутри нейрона называется его активацией. Таким образом, яркость наших нейронов зависит от величины их активации.
03:44
Speaker A
Эти 784 нейрона представляют собой первый слой нашей нейросети. Сразу скажу, что на последнем слое нейронов будет только 10. по одному на каждую цифру. Активация этих нейронов, она тоже задаётся числами от нуля до единицы, отражает, насколько система уверена, что входное изображение
04:09
Speaker A
Эти 784 нейрона представляют собой первый слой нашей нейросети. Сразу скажу, что на последнем слое нейронов будет только 10, по одному на каждую цифру. Активация этих нейронов тоже задаётся числами от нуля до единицы и отражает, насколько система уверена, что входное изображение содержит ту или иную цифру. Посередине есть ещё пара так называемых скрытых слоёв. Пока что поставим здесь знак вопроса, потому что нам только предстоит разобраться, как проходит процесс распознавания цифр. В нашей сети будет два скрытых слоя, каждый по 16 нейронов.
04:27
Speaker A
Количество слоёв я выбрал так, чтобы было удобно объяснять структуру нейросети. А нейронов 16, потому что 16 кружков красиво смотрится. Но вообще число слоёв и нейронов - это поле для экспериментов. В целом нейросеть работает так: активации на одном слое
04:45
Speaker A
Количество слоёв я выбрал так, чтобы было удобно объяснять структуру нейросети. А нейронов 16, потому что 16 кружков красиво смотрится. Но вообще число слоёв и нейронов — это поле для экспериментов. В целом нейросеть работает так: активации на одном слое определяют активации на следующем. И главный вопрос заключается в том, по каким именно правилам активации нейронов в одном слое определяют активации нейронов в следующем.
04:57
Speaker A
Чем-то этот процесс похож на то, как в мозге срабатывание одних нейронов приводит к срабатыванию других.
05:06
Speaker A
Чем-то этот процесс похож на то, как в мозге срабатывание одних нейронов приводит к срабатыванию других.
05:26
Speaker A
Тот запускает активации в следующем слое и так далее до последнего выходного слоя, где нейрон с самой высокой активацией и будет ответом нейросети на вопрос: "Какая цифра на картинке?" Прежде чем разбираться, как один слой влияет на следующий и как происходит
05:45
Speaker A
Я показываю нейросеть, которая уже обучена распознавать цифры. Сейчас всё объясню. На вход мы подаём картинку и тем самым зажигаем 784 нейрона входного слоя в соответствии с яркостью каждого пикселя. Далее этот набор активаций запускает активации в следующем слое. Тот запускает активации в следующем слое, и так далее, до последнего выходного слоя, где нейрон с самой высокой активацией и будет ответом нейросети на вопрос: «Какая цифра на картинке?» Прежде чем разбираться, как один слой влияет на следующий и как происходит обучение, давайте поговорим о том, почему такая многослойная структура в принципе способна отвечать на такие вопросы. Чего мы от неё ждём и чего хотим добиться от скрытых слоёв?
05:57
Speaker A
Когда мы с вами видим цифру, мы распознаём её составные элементы. Девятка - это кружок сверху и линя справа. У восьмёрки тоже сверху кружок, а под ним ещё один кружок. Четвёрку можно разбить на три отдельные линии и так далее.
06:16
Speaker A
Когда мы с вами видим цифру, мы распознаём её составные элементы. Девятка — это кружок сверху и линия справа. У восьмёрки тоже сверху кружок, а под ним ещё один кружок. Четвёрку можно разбить на три отдельные линии и так далее.
06:35
Speaker A
только на конкретный кружок, а на любой подобный элемент в верхней части изображения. Тогда нейросети оставалось бы лишь научиться сопоставлять сочетание этих элементов с конкретными цифрами на последнем слое. Но в этом случае никуда не девается основная задача, собственно, научиться распознавать эти элементы, да
06:55
Speaker A
Можно было бы предположить, что каждый нейрон предпоследнего слоя соответствует одному из этих компонентов. Например, если подать на вход цифру с кружком сверху, скажем девять или восемь, у какого-то нейрона значение активации будет близко к единице. И хорошо бы, чтобы нейрон реагировал не только на конкретный кружок, а на любой подобный элемент в верхней части изображения. Тогда нейросети оставалось бы лишь научиться сопоставлять сочетание этих элементов с конкретными цифрами на последнем слое. Но в этом случае никуда не девается основная задача — собственно, научиться распознавать эти элементы, да и просто выучить нужные. А ведь мы ещё даже не знаем, как взаимодействуют слои. Но пока мы всё-таки пойдём дальше.
07:02
Speaker A
Кружок тоже можно распознавать по частям. Например, можно разобрать его на отдельные фрагменты: короткие линии и дуги.
07:12
Speaker A
Кружок тоже можно распознавать по частям. Например, можно разобрать его на отдельные фрагменты: короткие линии и дуги.
07:23
Speaker A
Тогда, может быть, входное изображение зажигает во втором слое нейроны, которые распознают подобные фрагменты. Допустим, на вход поступает вот такое изображение. Оно активирует все нейроны, которые соответствуют коротким линиям этого изображения.
07:40
Speaker A
По той же логике длинная черта в цифрах 1, 7 или 4 — это либо одна длинная линия, либо последовательность нескольких коротких.
08:01
Speaker A
Более того, умение различать границы отдельных элементов в картинке может пригодиться для других задач по распознаванию изображений. Да и в целом есть самые разные задачи, которые вполне логично разбиваются на несколько последовательных уровней. Например, распознавание речи начинается с обработки аудиосигнала и выделения
08:21
Speaker A
Тогда, может быть, входное изображение зажигает во втором слое нейроны, которые распознают подобные фрагменты. Допустим, на вход поступает вот такое изображение. Оно активирует все нейроны, которые соответствуют коротким линиям этого изображения. Далее их комбинация активирует нейроны кружка и вертикальной черты, и тогда зажигается нейрон соответствующей девятки. Так работает нейронная сеть или нет — это другой вопрос. К нему мы вернёмся, когда обсудим обучение. Но пока мы хотя бы представили, чего ожидаем от нейросети с такой структурой.
08:29
Speaker A
Но вернёмся к распознаванию цифр. Нам важно разобраться в самом принципе действия, как активации на одном слое могут определять активации на следующем.
08:39
Speaker A
Более того, умение различать границы отдельных элементов в картинке может пригодиться и для других задач по распознаванию изображений. Да и в целом есть самые разные задачи, которые вполне логично разбиваются на несколько последовательных уровней. Например, распознавание речи начинается с обработки аудиосигнала и выделения отдельных звуков. Звуки складываются в слоги, слоги в слова, слова во фразы, а фразы уже в конкретные мысли и смыслы.
08:50
Speaker A
Допустим, мы хотим, чтобы конкретный нейрон второго слоя определял, есть ли линия в этой области изображения.
08:59
Speaker A
Но вернёмся к распознаванию цифр. Нам важно разобраться в самом принципе действия: как активации на одном слое могут определять активации на следующем.
09:17
Speaker A
Начнём с того, что назначим некоторый вес отдельным соединением между одним нейроном второго слоя и каждым нейроном первого. Эти веса просто числа. Мы будем использовать их как коэффициенты для значения в каждом нейроне, чтобы получить взвешенную сумму активации первого слоя.
09:36
Speaker A
Неважно, преобразуем мы пиксели в короткие линии, линии в формы или формы в конкретные цифры. На каждом этапе работает один и тот же механизм.
09:51
Speaker A
Если почти всем пикселям назначить нулевые веса, а положительные оставить лишь на нужном нам участке, то взвешенная сумма фактически сведётся к обычному сложению яркости пикселей, как раз в интересующей нас области.
10:07
Speaker A
Допустим, мы хотим, чтобы конкретный нейрон второго слоя определял, есть ли линия в этой области изображения. Сразу возникает вопрос: какие для этого должны быть параметры сети? Какие понадобятся настройки поведения сети, чтобы, изменив их, мы дали ей возможность распознать этот узор? Или другие комбинации пикселей, или даже набор фрагментов, из которых состоит кружок.
10:23
Speaker A
Вообще, в результате вычисления взвешенной суммы может получиться любое число, но в нашей сети должны получаться значения от нуля до единицы.
10:32
Speaker A
Начнём с того, что назначим некоторый вес отдельным соединением между одним нейроном второго слоя и каждым нейроном первого. Эти веса — просто числа. Мы будем использовать их как коэффициенты для значения в каждом нейроне, чтобы получить взвешенную сумму активаций первого слоя.
10:52
Speaker A
аргумент близок к нулю, функция плавно возрастает. Так активация нейрона на втором слое остаётся в нужном диапазоне и возрастает вместе со взвешенной суммой.
11:06
Speaker A
Веса удобно изображать в виде отдельной таблички. Зелёными пикселями обозначены положительные веса, красными — отрицательные, а яркость пикселя здесь отражает величину веса.
11:15
Speaker A
В таком случае мы добавляем смещение на эту величину. Сделать это несложно. Надо добавить к сумме некоторое число, например, -10, и уже затем пропустить её через сигмоиду.
11:28
Speaker A
Это дополнительное число и есть смещение. Итак, Веса отвечают за то, на какие именно пиксели смотрит этот нейрон из второго слоя. А смещение определяет, насколько большой должна быть взвешенная сумма активаций, чтобы он среагировал.
11:44
Speaker A
Но это только один нейрон. А ведь все остальные нейроны второго слоя тоже соединены со всеми нейронами первого слоя. И у каждого из 784 соединений есть свой вес, а у каждого нейрона своё смещение, которое добавляется к взвешенной сумме перед тем, как она
12:03
Speaker A
пройдёт через сегмоиду. Представляете, как много всего в одном только первом скрытом слое из шестна нейронов получаем 784 x 16 весов, а там ещё 16 смещений. И это только соединение между первым и вторым слоями. А ведь то же самое происходит между всеми
12:23
Speaker A
остальными слоями нейронной сети. Подсчитаем итог. Наша сеть содержит около 13.000 параметров, 13.000 разных настроек, которые можно по-разному менять. И всё это сказывается на поведении нейросети. Таким образом, обучение нейросети состоит в подборе конкретных значений всех этих параметров, так чтобы она могла решить
12:47
Speaker A
задачу, которую вы поставили. Вот страшный мысленный эксперимент. Представьте, каково самостоятельно вручную настраивать каждый параметр, подбирать все значения для того, чтобы второй слой распознавал фрагменты, третий их комбинации и так далее. Но, как по мне, лучше хотя бы такое объяснение, чем считать, что нейросеть -
13:09
Speaker A
это чёрный ящик. Потому что, когда сеть работает не так, как вы ожидаете, но вы понимаете, что означают эти параметры, то, по крайней мере, вы будете представлять, с чего начать настройку и как улучшить результат. А если сеть вроде бы работает, но не вполне понятно
13:26
Speaker A
почему, то можно посмотреть, что делают параметры, проверить сделанные предположения и исследовать более широкий спектр возможных решений. Но, согласитесь, в таком виде формула получается чересчур громоздкой.
13:41
Speaker A
Давайте выведем более компактный вариант записи, такой, который вы можете встретить, если решите почитать что-нибудь серьёзное о нейросетях.
13:49
Speaker A
Записываем активации всех нейронов первого слоя в столбик как вектор и умножаем этот вектор на матрицу.
13:59
Speaker A
Каждая строка этой матрицы содержит веса, присвоенные связям между первым слоем и каждым нейроном второго слоя.
14:06
Speaker A
Теперь взвешенные суммы активации нейронов первого слоя, которые получают нейроны на втором, представлены компонентами вектора, который получился в результате перемножения.
14:22
Speaker A
Кстати, многое в машинном обучении в итоге сводится к пониманию линейной алгебры. Так что если вам хочется получить наглядное представление о том, что такое матрицы и как умножить матрицу на вектор, посмотрите мой курс по линейной алгебре. в частности, видео про
14:36
Speaker A
преобразование. Вернёмся к нашей формуле. Нам нужно прибавить смещение, но мы не будем делать это отдельно для каждого элемента. Вместо этого объединяем все смещения в один вектор и прибавляем его к произведению активаций и весов.
14:51
Speaker A
Последний штрих. Применяем сигмоиду ко всему этому выражению. Если говорить точнее, применяем сигмоидную функцию каждому отдельному компоненту итогового вектора.
15:04
Speaker A
Теперь обозначим матрицу весов и векторы отдельными символами. И тогда весь переход активации от одного слоя к следующему уместится в одной компактной аккуратной формуле. Благодаря этому и код становится проще и производительнее, потому что матричные умножения хорошо оптимизированы в большинстве библиотек.
15:26
Speaker A
Помните, я говорил, что в нейронах просто содержатся некоторые числа. Эти числа, очевидно, зависят от того, какое изображение мы подаём на вход.
15:36
Speaker A
Так что правильнее говорить о нейроне как о функции, которая принимает выходы со всех нейронов предыдущего слоя и возвращает число от нуля до единицы.
15:47
Speaker A
По сути, вся сеть - это просто функция. Она получает на вход 784 числа и возвращает 10 чисел на выходе. Да, это невероятно сложная функция. У неё 13.000 параметров в виде весов и смещений, которые отражают определённые закономерности. Кроме того, в ней
16:06
Speaker A
выполняются матричные умножение и вычисляются сигмоидные функции, но тем не менее это просто функция. И в каком-то смысле даже хорошо, что она кажется такой сложной. Иначе было бы трудно поверить, что она справится с задачей распознавания цифр. Но как обучается неросеть? Как можно найти
16:24
Speaker A
нужные значения всех параметров на основе данных? Об этом мы поговорим уже в следующем видео, и там я наконец объясню, как же всё-таки работает нейросеть из нашего примера. Теперь настало время сказать: "Подписывайтесь на канал, чтобы не пропустить следующее видео". Но подозреваю, что мало кто
16:42
Speaker A
пользуется системой оповещений на Ютюбе. Я прав? Наверное, лучше так. Подписывайтесь, чтобы нейросети, которые лежат в основе рекомендательных алгоритмов Ютюба, считали, что вам стоит почаще предлагать контент с этого канала. Так или иначе, оставайтесь с нами. Большое спасибо всем, кто
17:00
Speaker A
поддерживает эти видео на Патреоне. Кажется, я несколько задержал выход серии про вероятность, но после этого проекта обещаю к ней вернуться, и как раз на Патрионе будут все обновления.
17:11
Speaker A
И в завершение хочу познакомить вас с Лишей Ли. Она написала кандидатскую по теоретическим основам глубокого обучения, а сейчас работает в венчурной компании Amplify Partners, которая выступила спонсором этого видео. Итак, Лиша, давай немного поговорим о сигмоидной функции. Насколько я понимаю,
17:28
Speaker A
раньше в нейронных сетях с её помощью соответствующую взвешенную сумму переводили в интервал от нуля до единицы, как бы подражая живым нейронам, у которых, по сути, есть два основных состояния.
17:38
Speaker A
Всё так. Но в современных сетях Сигмоиду используют уже довольно редко. Это устаревший подход. Да, оказалось, функцию гораздо проще обучать.
17:47
Speaker A
А Релу, она же просто убирает отрицательные значения, да? берётся взвешенная сумма плюс смещение, и для отрицательных значений возвращается ноль, а для положительных само это значение. Опять же, здесь логика, по-моему, примерно такая же, как у нейронов в мозге, которые активируются
18:06
Speaker A
только, если поступающий сигнал превышает некоторое пороговое значение, а в противном случае ничего не происходит, не будет никакой активации.
18:15
Speaker A
Это, конечно, в упрощённом виде. С сигмоидами обучение шло тяжело. На определённом этапе процесс сильно замедлялся. Тогда попробовали Релу, и оказалось, что она работает очень хорошо, особенно для масштабных нейронных сетей.
18:33
Speaker A
На этом всё. Спасибо, Лиша. Спасибо, что посмотрели перевод видео Free Blue One Brown. Если вам понравилось, обязательно заходите на оригинальный канал и подписывайтесь, чтобы YouTube знал, что вы любите научно-популярный контент.
18:47
Speaker A
Переведено и озвучено студией Верт Дайдер.
Topics:нейронные сетиглубокое обучениемашинное обучениераспознавание цифрMNISTнейроныактивацияскрытые слои3Blue1Brownматематика нейросетей

Get More with the SozAI App

Transcribe recordings, audio files, and YouTube videos — with AI summaries and speaker detection. 30 minutes free.

Or transcribe another YouTube video here →