Я глубоко убежден, что самым большим камнем преткновения для многих людей на пути к машинному обучению является математика. Есть также много людей, которые отказываются от изучения этой замечательной науки из-за этого. Но на самом деле, по моему опыту, помимо непосредственно грызущего много утомительного математического вывода, это еще и очень хороший способ понять проблему через образ в уме. И вы также можете изучить эти математические выводы после того, как узнаете его все входы и выходы. Это полезно для многих научных и инженерных дисциплин.
Например, хаотическое движение требует очень сложных математических методов. Типичный случай — силовой агрегат. Но я прочитал книгу, написанную французом много лет назад. Эта проблема объясняется экспериментальным явлением. Эффект от объяснения очень хороший.
Я решил написать эту статью. На самом деле именно потому, что я обнаружил, что многим студентам трудно понять нейронную сеть BP. Я пытаюсь начать с того, что позволю вам сначала создать в своем мозгу большую картину и поговорить об этом вопросе. Все, что вам нужно освоить, это немного матрицы и исчисления.
Надеюсь, вы сможете прочитать эту статью «Ах, это так просто!» Впервые я столкнулся с этой штукой на первом курсе. В то время я еще был студентом бакалавриата кафедры физики материалов, а машинное обучение было как раз накануне вспышки, это был 2014 год. В то время я изо всех сил пытался найти подходящую информацию, и в то время я чувствовал себя очень огорченным, чтобы понять эту вещь. Я надеюсь использовать эту статью, чтобы помочь многим людям, как я в то время.
- Что такое нейронная сеть BP
Нейронная сеть BP (Back-propagation, обратное распространение) — самая традиционная нейронная сеть. То есть нейронная сеть, использующая алгоритм Back-propagation. Обратите внимание, что он не является текущим набором глубокого обучения. Вы не можете использовать этот алгоритм для обучения сетей уровня глубокого обучения. Причина будет объяснена позже. Фактически узкое место машинного обучения успешно преодолело проблему невозможности обучения очень глубоких нейронных сетей с помощью алгоритма BP.
Помните, повторяйте эту фразу снова и снова: обратное распространение, обратное распространение, обратное распространение. Так что же такое обратное распространение? Ответ: ошибка. Генерируется системой сбора в процессе симуляции (это цикл, мы должны постоянно повторять этот процесс при обучении нейронной сети)ошибка,И вернуть эти ошибки в выходное значение, а затем использовать эти ошибки для корректировки весов нейронов, создавая таким образом систему искусственной нейронной сети, которая может имитировать исходную задачу.
2. Принцип работы биологического нерва
Я не собираюсь обсуждать здесь эту сложную биологию и неврологию. На самом деле все очень просто Причина, по которой мы, люди, можем отпустить самолет в небо, заключается в том, что мы «изучили» ряд знаний от теоретической механики, сигнальной системы до управления навигацией. Причина, по которой писатель может писать великие произведения, заключается в том, что он выучил такие языки, как английский, китайский, немецкий, французский, Ли Бай, Ду Фу и Шекспир. На самом деле, причина, по которой собака знает, что хозяин должен выкрикнуть яблоко и яблоко дважды (затем может получить кусок тушеной говядины), также является результатом обучения.
Так в чем же основная проблема учебного процесса? Ответ - ошибка. Например, вы студент, готовящийся к третьему курсу математики. Вы сами узнаете 1 + 1 = 2. Полезно ли вам тренировать это 10 000 раз? Бесполезный. Что вам нужно сделать, так это выяснить, где вы не можете, найти свои собственные лазейки и сделать целевые прорывы и обучение. Это обучение на ошибках.
Человеческий процесс такой же. Обучение, есть ошибка, а затем есть обратная связь, и мы учимся через эту обратную связь.
3. Базовая архитектура нейронных сетей
Любой, кто имеет самое базовое понимание и знания в этом вопросе, знает, что нейронная сеть на самом деле представляет собой несколько слоев нейронов, и каждый слой нейронов имеет несколько нейронных точек. Нейроны между разными слоями связаны друг с другом. На самом деле это:
Мне все равно, о чем говорят биология или неврология. Здесь каждый нейрон — это три вещи: вход, суждение и выход. Нейроны входного слоя (то есть круглого круга, представляющего нейрон или нервную клетку) считывают ваши входные данные. Эта штука может работать до тех пор, пока у вас есть данные. Это похоже на то, что вы можете водить машину, пока у вас есть бензин. Посередине находится «скрытый слой».Вы можете контролировать количество слоев в этом скрытом слое и количество нейронов или нервных клеток в каждом слое. Конечно, на практике для удобства мы обычно считаем, что сколько бы слоев вы ни использовали, количество нейронов или нервных клеток в каждом слое одинаково. Потому что так проще писать код.
Нейроны в каждом слое не связаны друг с другом. Нейроны соседних слоев связаны друг с другом. В нашей задаче два соседних слоя, все нейроны связаны друг с другом. Вы говорите, что это могло бы работать, если бы эти нейроны были отсоединены друг от друга? Действительно, так думает школа исторической связи. Но вы действительно можете подключиться к нему. На самом деле причина очень проста. Если мы действительно хотим отменить соединение между двумя точками, то, очевидно, просто установим значение этого соединения равным нулю. Это похоже на сетевую цепь, само сопротивление бесконечно.
Помимо нейронов, есть еще одна вещь, на которую нужно обратить внимание, это нервные провода. Вы можете назначить разные веса всем нейронам (два нейрона, соединенных вместе). И это основная задача обучения, говоря прямо, вы тот набор весов, который наиболее близок к идеальному ответу.
4. Рабочий процесс: умножение матриц
Мы хотим передать вход на выход этой математической структуры, что нам делать? Ответ: используйте умножение матриц.
На самом деле, эта идея очень проста в начале. Проиллюстрируем на этом примере.
На этом рисунке мы обозначаем вес между i-м нейроном в предыдущем слое и j-м нейроном в следующем слое (что очень ясно в 3) как w(ij). И три входа, переданные из предыдущего слоя, записываются как S (1), S (2) и S (3).
Потому что данные определенно передаются между разными слоями. Все, что мы делаем, это находим выходное значение следующего слоя путем умножения матриц.
Процесс на самом деле очень простой. Мы обозначаем выходы как O (1), O (2) и O (3).
В сочетании с весами, разве это не мысль, понятная старшекласснику? Возьмем, к примеру, O(1). Выход в O(1), естественно, поступает из S1, 2, 3. Затем вы можете умножить в соответствии с весом. Вес, естественно, является действительным числом, большим или равным нулю.
O(1)=S(1)*w(11)+S(2)*w(21)+S(3)*w(31)
Точно так же мы можем решить для O (2) и O (3). Мы оставляем эту часть в качестве упражнения. Надеюсь, ты увидишь это здесь и напишешь сам.
Ответ на самом деле довольно прост:
O(2)=S(1)*w(12)+S(2)*w(22)+S(3)*w(32)
O(3)=S(1)*w(13)+S(2)*w(23)+S(3)*w(33)
Студенты, знакомые с матричным умножением, пишущие здесь, должны внезапно осознать это. Да, это умножение матриц! Самый основной вид. Как это должно выглядеть при записи в виде матрицы? Это еще один вопрос для размышления, и я надеюсь, что вы напишете об этом.
На самом деле ответ таков:
Мы знаем, что математики изучают матрицы сотни лет, накопив большое количество методов. Это также инструмент, с которым хорошо знакомы физики и инженеры. На самом деле мы используем этот метод, и, естественно, мы можем отправлять входные данные от самого левого до самого правого слоя за слоем.
Мы, естественно, можем получить результат. Но этот результат может быть ошибочным! Так что делать? Мы используем реальный результат для сравнения с этим результатом, например, чтобы найти разницу, и, естественно, ошибка может быть решена.
Точно так же мы можем возвращать ошибку на всем пути умножения матриц. И в этом процессе каждый нейрон и нейронная линия естественным образом могут получить некоторую «информацию».
Сделайте то же самое. Когда у вас есть ошибки E(1), E(2) и E(3), вы можете естественным образом использовать эти ошибки, чтобы вернуться на предыдущий уровень, чтобы получить ошибки, которые должны быть возвращены предыдущим уровнем. Фактически, это также содержание матричного умножения.
5. Как настроить параметры: исчисление
Фактически, именно так мы используем искусственные нейронные сети для имитации процесса обучения. Теоретически этот алгоритм может справиться с любой проблемой в мире. Будь то торговля акциями или биологическая информация, будь то взлет самолета или запуск подводной лодки. Другое дело, конечно, техника.
Так как же решаются эти веса?
Ответ: исчисление.
Идем дальше: правило вывода цепи в исчислении.
Еще один шаг: дифференциальное цепное правило вывода матриц.
Дифференцирующие матрицы — слепое пятно в математическом образовании в колледже. Однако, как компьютеры, мы можем напрямую использовать выводы, сделанные этими математиками!
Продолжение следует.