Самой привлекательной технологией последних лет, несомненно, является искусственный интеллект. Независимо от того, работаете вы в технологической интернет-индустрии или нет, искусственный интеллект можно увидеть повсюду: от победы AlphaGo над чемпионом мира по го, до появления концепции беспилотного вождения, до технологического гиганта All in AI, а также университетов и колледжей, предоставляющих огромное количество искусственного интеллекта для выпускников профессиональных обществ. Настолько, что люди начали догадываться: грядет новая революция, и наш мир претерпит очередное большое изменение, а потом забеспокоились: не заменят ли мою работу машины? Как я могу поймать эту революцию?
Глубокая нейронная сеть лежит в основе технологии искусственного интеллекта Примерно в это же время год назад я учился в скоростном поезде дома.Нейронная сеть 3Blue1BrownСерия видеокурсов, всего 4 серии продолжительностью более 60 минут, доходчиво объяснила нейронную сеть от High Level до деталей деривации.На тот момент, помимо азарта от получения новых знаний, у меня было еще и немного нового познания. Облили холодной водой революционную технологию в моей голове: нейронные сети могут решать некоторые сложные задачи, которые раньше было сложно писать программам — такие как распознавание изображений, речи и т. д., но механизм ее реализации говорит мне, что нейронные сети до сих пор не достигли биологический уровень интеллекта, и нельзя ожидать, что он заменит человека в краткосрочной перспективе.
Сегодня, год спустя, еще во время Праздника Весны, я записал свое понимание нейронных сетей.Это учебная заметка для этой части знаний.Если вам повезет, вы также можете дать студентам, которые не знаю, что нейронные сети понимают это.
что такое нейронная сеть
Википедия объясняет это такНейронные сети:
Современная нейронная сеть представляет собойнелинейная статистикаИнструменты моделирования данных, нейронные сети обычно оптимизируются методом обучения, основанным на типе математической статистики, поэтому это также практическое применение методов математической статистики.
Это определение относительно широкое, и вы даже можете использовать его для определения других алгоритмов машинного обучения, таких как логистическая регрессия и деревья решений GBDT, которые мы вместе изучали ранее. Давайте будем конкретными.Следующий рисунок представляет собой схематическую диаграмму логистической регрессии:
где x1 и x2 представляют входные данные, w1 и w2 — параметры модели, а z — линейная функция:
Затем мы делаем сигмод-преобразование по z (синий кружок на рисунке), чтобы получить результат y:
Фактически, приведенную выше логистическую регрессию можно рассматривать как слой только с 1 слоем.входной слой, 1 историявыходной слойНейронная сеть , круги, которые содержат числа, называютсянейроны; где межслойные соединения w1, w2 и b являютсяПараметры нейронной сети, если каждый нейрон поддерживает связи между слоями, такой слой называетсяполносвязный слой(полный уровень подключения) илиплотный слой(плотный слой); кроме того, сигмовидная функция также называетсяфункция активации(функция активации), в дополнение к сигмовидной, обычно используемые функции активации включают ReLU, функцию tanh и т. д. Все эти функции играют роль нелинейного преобразования линейных функций. У нас остается одно важное понятие:скрытый слой, для иллюстрации которого требуется сложить более двух логистических регрессий:
Как показано на рисунке выше, кроме входного слоя и выходного слоя, остальные слои называютсяскрытый слой. Если мы сложим еще несколько слоев, эту нейронную сеть можно будет назватьглубокая нейронная сеть(Глубокая нейронная сеть), некоторые учащиеся могут спросить, сколько слоев является «глубоким»? Абсолютного вывода по этому поводу нет, я лично считаю, что это больше 3-х слоев. :)
Выше приведена нейронная сеть и концепции, содержащиеся в нейронной сети.Видно, что нейронная сеть не является особенной.Вообще говоря, это
Нелинейная функция или вход и выход нескольких нелинейных функций соединяются, образуя более крупную нелинейную функцию.
Видно, что нейронная сеть не имеет никакого отношения к человеческому мозгу.Если говорить о другом ее названии——Многослойный персептрон, это не будет казаться таким загадочным.Многослойный персептрон был создан в 1980-х годах, но почему он не вспыхнул до сегодняшнего дня, 30 лет спустя? Вы правы, из-за смены названия... шучу; глубокое обучение на самом деле долгое время переживало темную корыто, пока люди не начали использовать графические процессоры для резкого увеличения скорости обучающих моделей, и несколько знаковых событий: таких как Победа AlphaGo над Li Shishi, фреймворк TensorFlow с открытым исходным кодом от Google и т. д. Заинтересованные студенты могут ознакомиться с историей здесь.
Зачем нужны нейронные сети
Возьмем в качестве примера нейронную сеть, состоящую из трех логистических регрессий на рисунке выше.Какие преимущества она имеет по сравнению с обычной логистической регрессией? Давайте сначала посмотрим на недостатки размещения логистической регрессии заказа, В некоторых случаях логистическая регрессия никогда не сможет его классифицировать, например, следующие данные:
label | x1 | x2 |
---|---|---|
class 1 | 0 | 0 |
class 1 | 1 | 1 |
class 2 | 0 | 1 |
class 2 | 1 | 0 |
Эти 4 образца нарисованы в системе координат, как показано ниже.
Поскольку граница решения логистической регрессии представляет собой прямую линию, две категории на изображении выше, независимо от того, что вы делаете, вы не можете найти прямую линию, чтобы разделить их, но с помощью нейронных сетей вы можете это сделать.
Сеть, состоящая из 3 логистических регрессий (без учета смещения), выглядит следующим образом:
Наблюдайте за процессом расчета всей сети.Перед входом в выходной слой расчет, выполненный сетью, на самом деле:
То есть вход сначала подвергается линейному преобразованию (Linear Transformation) для получения[z1, z2]
, затем поставьте[z1, z2]
Сделайте нелинейное преобразование (сигмовидное), получите[x1', x2']
, (понятие линейного преобразования может относиться кэто видео). Отсюда следующие операции ничем не отличаются от обычной логистической регрессии, поэтому их отличия таковы:Прежде чем наши данные будут введены в модель, выполняется слой преобразования признаков (преобразование признаков, иногда называемое извлечением признаков), чтобы сделать данные, которые не могли быть классифицированы до того, как они были классифицированы..
Давайте продолжим рассмотрение эффекта преобразования признаков, предполагая, чтоза, подводим к приведенной выше формуле, вычисляем соответствующее[x1', x2']
следующее:
label | x1 | x2 | x1' | x2' |
---|---|---|---|---|
class 1 | 0 | 0 | 0.5 | 0.5 |
class 1 | 1 | 1 | 0.88 | 0.27 |
class 2 | 0 | 1 | 0.73 | 0.38 |
class 2 | 1 | 0 | 0.73 | 0.38 |
Затем нарисуйте преобразованные 4 точки в системе координат:
Очевидно, что после преобразования признаков две категории можно легко разделить границей решения.
так,Преимущество нейронной сети заключается в том, что она может помочь нам автоматически завершить преобразование или извлечение признаков., особенно для сложных проблем, таких как звук и изображение, потому что, сталкиваясь с этими проблемами, людям сложно четко сказать, какие функции полезны.
Решая преобразование признаков, нейронные сети также создают новые проблемы, то есть нам необходимо проектировать различные сетевые структуры для работы с различными сценариями, такими как использование сверточных нейронных сетей (CNN) для обработки изображений, использование сети с долговременной кратковременной памятью (LSTM). ), чтобы решать проблемы последовательности, использовать генеративно-состязательную сеть (GAN) для написания стихов и карт и т. д. Даже Transformer/Bert, добившийся прорыва в обработке естественного языка (NLP) в прошлом году, также представляет собой специфическую сетевую структуру. так,Хорошее изучение нейронных сетей также полезно для понимания других более сложных сетевых структур..
Как работают нейронные сети
Как упоминалось выше, нейронную сеть можно рассматривать как нелинейную функцию.Параметры функции - это все веса и смещения, соединяющие нейроны.Функция может быть сокращена какf(W, B)
, на примере задачи распознавания рукописных цифр: РаспознаваниеНабор данных MNISTЧисла в наборе данных (набор данных MNIST — это HelloWorld в глубоком обучении) содержат десятки тысяч изображений чисел, написанных разными людьми, всего десять чисел от 0 до 9. Каждое изображение28*28=784
пикселей, мы проектируем сеть, подобную этой, для выполнения этой задачи:
-
Входной слой может содержать все пиксели изображения, всего 784 нейрона.
-
Используя 1 скрытый слой с 16 нейронами, затем
- Количество параметров от входного слоя до скрытого слоя равно
784*16=12544
, число смещения равно 16
- Количество параметров от входного слоя до скрытого слоя равно
-
Выходной слой состоит из 10 нейронов, представляющих десять случаев от 0 до 9.
- Количество параметров от скрытого слоя до выходного слоя равно
16*10=160
, число смещения равно 10
- Количество параметров от скрытого слоя до выходного слоя равно
-
Суммарные веса и смещения составляют
12544+16+160+10 = 12730
Кусок
Заполните свойства сетевой функции:
参数:12730 个 Weights 和 Biases
输入:一张 28*28 的手写数字图片
输出:0-9 这 10 个数的可能性
Следующий вопрос: как возникла эта функция? Этот вопрос по существу спрашивает, как определяются значения этих параметров.
В машинном обучении есть еще одна функция c для измерения качества f, параметр c представляет собой группу наборов данных, вы вводите в c пакет весов и смещений, c выводит Bad или Good, когда результат плохой, вы нужно Продолжать корректировать Веса и Смещения f, снова ввести его в c и так далее, пока c не даст значение Good, это c является функцией стоимости (или функцией потерь). В случае распознавания рукописных цифр c можно описать следующим образом:
参数:上万张手写数字图片
输入:f 的 Weights 和 Biases
输出:一个数字,衡量分类任务的好坏,该数越小越好
Видно, что для выполнения задачи распознавания рукописных цифр необходимо только настроить эти параметры 12730 и позволить функции потерь выводить достаточно малое значение, В более широком смысле можно рассматривать большинство проблем нейронных сетей и машинного обучения. как определить функцию потерь и задачу настройки параметров.
В задаче распознавания рукописного ввода мы можем либо использовать функцию потерь Cross Entropy (Перекрестная энтропия), либо MSE (Mean Squared Error) в качестве функции потерь Далее осталось настроить параметры.
Настройка параметров нейронной сети не использует специальные методы.Это по-прежнему алгоритм градиентного спуска, который все усвоили, когда впервые столкнулись с машинным обучением.Градиентный спуск решает оставшиеся проблемы в итеративном процессе выше - когда функция потерь дает Плохой результат, Как настроить параметры, чтобы уменьшить Loss максимально быстро.
Градиент можно понимать как:
Рассмотрим гору, высота точки (x,y) на горе обозначается H(x,y). Градиент в этой точке — это направление самого крутого склона (или склона) в этой точке. Величина градиента говорит нам, насколько он крутой на самом деле. ——вики/градиент
Соответствуя Loss H и 12730 параметрам (x,y), тогда градиент Loss ко всем параметрам может быть выражен в виде следующего вектора, длина которого равна 12730:
Таким образом, каждый итерационный процесс можно резюмировать как
- Введите параметры модели в функцию потерь
- Используя параметры модели в сочетании с десятками тысяч образцов, рассчитать потери
- Рассчитайте градиент всех этих параметров в соответствии с Loss
- Отрегулируйте параметры в соответствии с градиентом
Формула для настройки параметров с помощью градиентов выглядит следующим образом (смещение здесь для простоты опущено):
В приведенной выше формуле— это скорость обучения, что означает каждый раз делать небольшой шаг в направлении наибольшего снижения, чтобы избежать превышения оптимизации.
Из-за большого количества параметров нейронной сети требуется более эффективный алгоритм расчета градиентов, поэтому алгоритм обратного распространения готов к появлению.
Алгоритм обратного распространения
Прежде чем изучать алгоритм обратного распространения, давайте рассмотрим цепное правило в исчислении: пустьg = u(h)
,h = f(x)
являются двумя дифференцируемыми функциями, небольшое изменение x △x вызовет небольшое изменение h △h, поэтому g также приведет к небольшому изменению △g, теперь требуется △g/△x, вы можете использовать цепное правило:
С приведенной выше основой понять алгоритм обратного распространения несложно.
Предположим, что наша демонстрационная сеть имеет только 2 слоя, а вход и выход имеют только 2 нейрона, как показано на следующем рисунке:
ввход,это выход,– целевое значение выборки, используемая здесь функция потерь L – MSE, верхний индекс (1) или (2) на рисунке указывает на принадлежность параметра к слою (1) или слою (2) соответственно, а нижний индекс 1 или 2 указывает на то, что 1-й или 2-й нейрон слоя.
Теперь давайте посчитаеми, после освоения расчета частных производных этих двух параметров осваивается весь расчет градиента.
Так называемый алгоритм обратного распространения относится к вычислению частной производной каждого параметра справа налево., по цепному правилу
Разверните левый член, используя цепное правило
сновавыходное значение,Его можно рассчитать непосредственно из производной MSE:
и,ноявляется производной сигмовидной функции взначение при , т.е.
тогдаДаже вне:
увидеть сноваэто, потому что
так
Примечание: приведенная выше формула действительна для всехивсе установлено, и результат очень интуитивен, т.е.правильноЧастная производная - это вход слеваВ то же время здесь подразумевается и другой смысл: какой из них нужно отрегулироватьвлиять, для того, чтобы Убыток падал быстрее.Из этой формулы видно, что в первую очередь корректируется, конечно же, больший.значение, соответствующее, самый значительный эффект.
Итак, параметры последнего слояЧастная производная рассчитывается
Переходим на следующий уровень, по цепному правилу:
Продолжайте расширять элемент слева
Вы обнаружите, что нет, это почти то же самое, что вычисление последнего слоя, но следует отметить, что здесьВоздействие на Loss имеет несколько путей, поэтому для этого примера всего 2 выхода:
В приведенной выше формулеВсе было рассчитано в последнем слое, давайте посмотрим,так как
тогда
так же
Примечание. Интуиция настройки параметров градиентного спуска здесь также расширена: даже если потеря должна уменьшаться быстрее всего, предпочтительно настраивается вес с большим значением веса.
Уже,также понял
Соблюдайте приведенную выше формулу,Так называемая частная производная каждого параметра может быть преобразована в вычисление линейно-взвешенной (взвешенной суммы) с помощью алгоритма обратного распространения., резюмируется следующим образом:
В формуле n представляет количество классификаций, (l) представляет l-й слой, а i представляет i-й нейрон в l-м слое.Поскольку обратное распространение — это линейное взвешивание, всю нейронную сеть можно вычислять параллельно с помощью матриц GPU..
Наконец, когда вы понимаете принцип работы нейронной сети, вы все больше и больше думаете, что она выполняет кучу вычислительных операций?Конечно, как способ доказать, что человек научился исчислению, нейронную сеть все же стоит изучить. Просто шучу..
резюме
В этой статье мы проходим
- что такое нейронная сеть
- Зачем нужны нейронные сети
- Как работают нейронные сети
- Алгоритм обратного распространения
Эти четыре пункта всесторонне изучили точку знаний нейронной сети.Я надеюсь, что эта статья может вам помочь.
Ссылаться на:
- 3Blue1Brown: Neural Network
- 3Blue1Brown: Linear Transformer
- Алгоритм обратного распространения
- Википедия: искусственная нейронная сеть
Связаться с блогером: