0: Что такое нейронные сети и как они работают сейчас мы рассмотрим достаточно простую нейронную сеть, но почти все принципы, о которых я расскажу, также применимы для построения более сложных современных нейронных сетей. Готовы? Поехали. Всем привет. Я
1: Я Дмитрий Коробченко, и, как вы поняли в этом видео, мы поговорим о нейронных сетях. Сегодня нейронные сети с успехом решают огромное множество различных задач. Но сегодня мы рассмотрим достаточно простую задачу классификации. Что такое классификация по некоторому объекту нужно
2: Предсказать, к какому классу он относится, например, по признаковому описанию пациента предсказать, болен он или здоров, или же по картиночке с изображением цифры предсказать это нолик, единичка, двоечка и так далее. Нейронная сеть это, по сути, некоторая
3: Функция алгоритм, у которого есть что-то на входе и что-то на выходе и входом, и выходом должны быть какие-то числовые данные рассмотрим простейший пример пусть у нас даны 3 числовые характеристики некоторого объекта x, 1, x, 2, икс 3, то есть просто какие-то 3.
4: И нам нужно по ним сделать простое бинарное предсказание, да или нет. Например, это может быть давление, температура и возраст некоторого пациента. И нам нужно предсказать, болен он или нет, когда нам нужно по нескольким факторам принять какое-то суммарное решение.
5: Обычно мы эти факторы взвешиваем давайте использовать этот принцип для построения нашего предсказателя будем суммировать входные значения x 1, x 2 икс 3 с некоторыми весовыми коэффициентами дабл ю 1 дабл ю 2 дабл ю 3, тогда взвешенное.
6: Сумма входов будет равна x 1 умножить на дабл ю 1 плюс x 2 умножить на дабл ю 2 плюс x 3 умножить на дабл ю 3 далее для принятия решения по получившемуся числу можно сравнить его с некоторым другим числом больше или меньше или используют эквивалентную форму, получившую.
7: Взвешенную сумму плюс некоторое значение смещения сравнивать с нулём больше или меньше. Для проверки этого условия можно использовать вот такую вот пороговую функцию. Все, что больше нуля отображать в единицу, все, что меньше нуля отображать в 0 её
8: Выход можно прямо трактовать, как да или нет. Зачастую бывает полезно ослабить эту функцию и сделать порог более мягким. Таким образом, на выходе мы получим не жёсткие значения 0 или 1, а некоторое непрерывное значение от нуля до единицы, то есть как бы вероятность того,
9: Что наш пациент болен. Для этого подойдёт, например, сигмоидальная функция в нуле у нас вероятность 0 5. То есть мы не знаем, и чем дальше от нуля в плюс или в минус. Соответственно, значение вероятности ближе к нулю или к единице. Этот простой пример на самом деле,
10: Соответствует тому, что происходит в 1 нейроне некоторой нейронной сети или, другими словами, это можно назвать однослойной нейронной сетью этот инструмент уже можно применять для решения различных задач классификации, но не очень сложно.
11: Такая модель не очень выразительна, так как описывает лишь линейные закономерности и применима только в случаях, когда данные линейно разделимы для поиска более сложных закономерностей, архитектуру нужно усложнять сложные задачи имеет смысл.
12: Решать по принципу разделяй и властвуй, то есть разбить её на более простые подзадачи. Таким образом, 1 нейрон пусть решает 1 маленькую простую задачку, а сеть из нейронов уже более сложную задачу. Итак, пусть теперь у нас есть несколько
13: Независимых нейронов, которые, по входным данным, решают несколько простых задачек и получают несколько ответов. Каждый нейрон с какими-то своими весами. А дальше мы используем эти промежуточные данные как входные значения в некоторый другой предсказатель.
14: В нашем случае какой-то другой нейрон. Вот мы и получили довольно простую двуслойную нейронную сеть. 2 слой тоже решает какую-то маленькую простую задачку, но оперирует уже ответами из 1 слоя. Давайте нашу нейронную сеть Немно.
15: Немножко улучшим, что если мы хотим делать классификацию не на 2 класса, а сразу на н. Классов, в таких случаях обычно строят несколько бинарных классификаторов по принципу 1 против всех остальных. В случае нейронных сетей это эквивалентно тому, если мы
16: Последнем слое поставим Ровно н. Нейронов теперь у нас на выходе из нейронной сети уже есть n чисел, и очень удобно эти n. Чисел трактовать как вероятности принадлежности к тому или другому классу для этого достаточно сделать некоторое нормиру.
17: Преобразование в конце, чтобы все числа были от нуля до единицы и сумма всех вероятностей тоже равнялась единице. Это, например, можно сделать с помощью функции софт Макс. Вот такая вот классная двуслойная нейронная сеть, однако её, конечно же,
18: Можно усложнять, добавляя ещё слоёв, что будет эквивалентно увеличению глубины нейронной сети. Также можно добавлять нейроны в каждый отдельный слой, и это ещё иногда называют увеличением ширины нейронной сети, несмотря на то, что уже 2
19: Слойная нейронная сеть является универсальным аппроксиматоров. Во избежание переобучения и для поиска более сложных закономерностей сети имеет смысл делать глубже, но об этом поговорим в других видео. Кстати, в нейронных сетях вот эти вот промежуточные значения не
20: Обязаны быть осмысленными или интерпретируемыми. Нейронная сеть во время обучения сама разберётся, что ей удобно поставить в середине. Нас лишь волнует вход и финальный выход. То, что мы в итоге получили, называется полносвязной нейро.
21: Сетью или многослойным перцептроном. Давайте теперь взглянем на эту штуку более формально. Помните, как мы вычисляли значение в каком-то промежуточном нейроне? Некая пороговая функция от взвешенной суммы. Плюс некоторое смещение такая
22: Функция в нейронных сетях, кстати, называется функция активации, и она совсем не обязана быть пороговой. Главным её свойством должна быть нелинейность. Если бы её не было, то какую бы глубокую нейронную сеть мы не построили без применения нелинейной фу.
23: Функция активации в каждом нейроне вся наша сеть была бы эквивалентна некоторой однослойной, невыразительной нейронной сети, так как главное лишь бы функция активации была нелинейной в современных нейронных сетях, как правило, берут очень простые функции активации, например.
24: Самая распространённая и популярная функция релу. Все, что больше нуля оставить как есть, а все, что меньше нуля занулить, кроме простоты. У неё есть и другие полезные свойства, которые помогают при обучении нейросети. Теперь давайте рассмотрим подробнее, как работает.
25: 1 слой нейронной сети включаем линейную алгебру взвешенную сумму в 1 нейроне можно представить как скалярное произведение вектора x, состоящего из входных значений и вектора w, состоящего из соответствующих весовых коэффициент.
26: Но так как у нас есть несколько нейронов в 1 слое и на выходе у нас целый вектор выходных значений аш. Получается, что каждый вход связан с каким-то выходом и каждой такой связи соответствует некоторый уникальный вес таким образом.
27: Образом. У нас есть матрица весов. Например, если было 3 входа и 4 выхода, матрица будет иметь размер 4 на 3. Кроме того, для каждого нейрона у нас было какое-то своё значение смещения. Все вместе они дают нам вектор смещений или Баяс.
28: В итоге вычисление 1 слоя нейронной сети эквивалентно умножению входного вектора x на матрицу весов w. Прибавление вектора смещения и взятие функции активации в каждом элементе вектора получили вектор промежуточных скрытых значений.
29: И дальше подаём его во 2 слой, где снова умножаем на новую матрицу весов 2 слоя, прибавляем вектор смещения и так далее. Кстати, в последнем слое перед софт Максом функцию активации обычно не применяют. Итак, давайте ещё раз, пусть
30: У нас есть обученная нейронная сеть. Её обучение это отдельный вопрос, как её применить для классификации некоторого объекта. Пусть наш объект характеризуется к числами. Тогда мы так построили нашу нейронную сеть, чтобы у неё было к входных значений.
31: Далее, пусть мы хотим делать классификацию на н. Классов, тогда мы в нашей нейронной сети делаем Ровно н выходных нейронов в последнем слое у нас есть какое-то количество слоёв в каждом слое мы входной вектор умножаем на матрицу весов, прибавляем вектор смещения, берём поэлементно.
32: Функцию активации в последнем слое функцию активации применять нет смысла можно сразу после прибавления вектора смещения подавать полученный вектор в софт Макс и получать финальное распределение вероятности по классам, ну а затем, если надо, можно.
33: Выбрать тот класс, который соответствует максимальной вероятности, и это и будет наш финальный ответ на задачу классификации такой прогон нейронной сети от входа к выходу называется ещё прямым распространением или инференсом остался лишь 1 вопрос.
34: Где взять весовые коэффициенты дабл ю и смещение б баесы. На самом деле это обучаемые параметры. То есть они настраиваются автоматически в процессе обучения нейронной сети, но об этом мы поговорим в других видео, навер,
35: Наверняка вы слышали, что нейронные сети умеют работать также с картинками, текстами, звуками и другими сложными типами данных. Да, но для таких сложных типов данных нужны специализированные типы архитектур нейронных сетей, например, свёрточные нейронные сети рекуррентные.
36: Нейронной сети и так далее. И тем не менее более сложные типы архитектур нейронных сетей основаны на тех же базовых принципах, которые мы рассмотрели в этом видео. Если есть вопросы или что-то осталось непонятным, обязательно напишите в комментариях на самое интересное.
37: Обязательно отвечу. Если видео понравилось, не забудьте поставить лайк. Также на канале будет много чего интересного. Так что подписывайтесь и нажимайте на колокольчик, чтобы ничего не пропустить. С вами не прощаюсь. До новых встреч.