1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/scruel-Notes-ML-AndrewNg

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
week4.md 20 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 13.03.2025 14:11 638a769

8 Нейронные сети: представление (Neural Networks: Representation)

8.1 Нелинейные гипотезы (Non-linear Hypotheses)

Теоретически мы можем использовать полиномиальные функции для аппроксимации любой функции (ряд Тейлора), что позволяет получить кривую, подходящую для любого вопроса.

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

А какое может быть максимальное количество признаков? Вот пример из области компьютерного зрения:

На изображении выше показана область размером 50x50 пикселей с монохромной картинкой (каждый пиксель имеет одну яркость). Если выбрать каждый пиксель в качестве признака, то общее количество признаков будет равно n=2500 (при использовании цветового пространства RGB, где каждый пиксель имеет три значения, n=7500). Если объединять пары этих признаков, то общее количество новых признаков составит C(2500, 2) ≈ 3 миллиона.

8.2 Нейронные сети и мозг (Нейроны и мозг)Биологи мозга, проводя эксперименты на животных, обнаружили, что участок корковой ткани, специализирующийся на обработке звуковых сигналов, также способен обрабатывать другие типы сигналов, такие как визуальные. То есть, если отключить связь между этим участком и ушами, и соединить его с глазами, этот участок мозга, предназначенный для обработки звука, сможет принимать и обрабатывать визуальные сигналы, тем самым "обучаясь видеть". Биологи мозга сделали вывод, что существует одна универсальная алгоритмическая процедура обучения для всего мозга ("теория одного алгоритма обучения"). Если эту процедуру можно было бы выявить и применить к компьютерам, это сделало бы искусственный интеллект, аналогичный человеческому, возможным.Нейронные сети были созданы, чтобы моделировать работу человеческого мозга, но они требуют значительных вычислительных мощностей. По мере повышения производительности аппаратных средств компьютеров, нейронные сети стали переходить из забвения в популярность, и сегодня широко используются во всех областях.

Ниже представлены некоторые применения, основанные на исследованиях (тем, кто интересуется, рекомендуется просмотреть видео):

Система BrainPort: помогает слепым людям воспринимать объекты через камеру и вкусовые рецепторы на языке.

Пояс с тактильными датчиками: когда он направлен на север, будильник начинает звучать, позволяя человеку ориентироваться по направлению (преобразование звукового сигнала в сигнал направления).

8.3 Представление модели 1 (Модель представления I)

Как нейронные сети имитируют работу нейронов человека, давайте сначала взглянем на внешний вид нейрона мозга: Источник: http://blog.csdn.net/zzwu/article/details/574931Представьте себе работников на производственной линии в типографии (включая роботов), каждый из которых выполняет конкретную задачу, такую как переплетка, покрытие пленкой, нанесение защитных меток и т.д. Работники видят книги и завершают свои задачи, после чего возвращаются обратно на конвейер, который затем передаёт книгу следующему этапу производства. Этот процесс повторяется снова и снова до тех пор, пока вся книга не будет полностью изготовлена.Аналогично, можно сравнить ядра клетки (nucleus) с рабочими, аксон с конвейерной лентой, а дендрит — со зрением рабочего. Каждая клетка принимает информацию через дендриты, обрабатывает её, а затем отправляет обработанную информацию через аксоны в виде электрического сигнала, пока она не будет полностью понята. Конечно же, наш мозг намного сложнее, и количество нейронов в одном человеке превышает общее число всех рабочих на всех производственных линиях земли!

В искусственных нейронных сетях дендриты соответствуют входам (inputs), ядра клетки — активационному элементу (activation unit), а аксоны — выходам (outputs).

Обычно мы делим нейронные сети на три части (не путайте с трёхслойной сетью!), то есть входной слой (input layer), скрытый слой (hidden layer) и выходной слой (output layer).

Круг на этом изображении представляет собой активационный элемент нейронной сети, где входной слой соответствует входным элементам, скрытый слой — промежуточным элементам, а выходной слой — выходным элементам. Промежуточные активационные элементы используют активационную функцию (activation function) для обработки данных.

Вот некоторые существующие концепции, представленные другими названиями в нейронных сетях:

  • ( x_0 ): постоянная единица (bias unit), ( x_0 = 1 )
  • ( \Theta ): веса (weights), также известные как параметры.
  • Активационная функция: ( g ), например, логистическая функция и другие.
  • Входной слой: соответствует признакам ( x ) в наборе обучающих данных.
  • Выходной слой: соответствует результатам ( y ) в наборе обучающих данных.

( a_i^{(j)} ): ( i )-й активационный элемент ( j )-го слоя

( \Theta^{(j)} ): матрица весов, которая отображает ( j )-й слой в ( j+1 )-й слой.

( \Theta_{v,u}^{(j)} ): вес, который отображает ( u )-й элемент ( j )-го слоя в ( v )-й элемент ( j+1 )-го слоя.>$s_j$: Количество активационных единиц $j$-го слоя (не считая смещения).

Обратите внимание:

  • Часто встречаются формулы и схемы, которые можно в любой момент пересмотреть!
  • Каждый нейрон слоя влияет на все нейроны следующего слоя (матричное умножение).
  • Если в слое $j$ имеется $s_j$ нейронов, а в слое $j+1$ — $s_{j+1}$, то матрица весов $\Theta^{(j)}$ будет размером $s_{j+1} \times (s_j + 1)$. То есть размер каждой матрицы весов может меняться.
  • Здесь "+1" связано с наличием смещения, что означает отсутствие смещения в выходном слое, тогда как входному и скрытому слоям требуется добавление смещения.

Согласно модели, представленной выше:

$Size(\Theta^{(1)}) = s_{j+1} \times (s_j + 1) = s_2 \times (s_1 + 1) = 3 \times 4$

$Size(\Theta^{(2)}) = s_3 \times (s_2 + 1) = 1 \times 4$

8.4 Представление модели 2 (Model Representation II)

image

Применяем активационную функцию ко всем активным нейронам первого слоя (Layer 1), чтобы получить значения активных нейронов второго слоя (Layer 2):

$$ \begin{align*} a_1^{(2)} &= g(\Theta_{10}^{(1)} x_0 + \Theta_{11}^{(1)} x_1 + \Theta_{12}^{(1)} x_2 + \Theta_{13}^{(1)} x_3) \\ a_2^{(2)} &= g(\Theta_{20}^{(1)} x_0 + \Theta_{21}^{(1)} x_1 + \Theta_{22}^{(1)} x_2 + \Theta_{23}^{(1)} x_3) \\ a_3^{(2)} &= g(\Theta_{30}^{(1)} x_0 + \Theta_{31}^{(1)} x_1 + \Theta_{32}^{(1)} x_2 + \Theta_{33}^{(1)} x_3) \end{align*} $$

Применяем активационную функцию ко всем активным нейронам второго слоя, чтобы получить выход:

$h_\Theta(x) = a_1^{(3)} = g(\Theta_{10}^{(2)} a_0^{(2)} + \Theta_{11}^{(2)} a_1^{(2)} + \Theta_{12}^{(2)} a_2^{(2)} + \Theta_{13}^{(2)} a_3^{(2)})$Вышеописанный процесс называется предварительным распространением (forward propagation), то есть вычисления начинаются с входного слоя и последовательно передаются через каждый следующий слой.Помните логистическую регрессию?

${h_\theta}(x) = g({\theta_0} + {\theta_1}{x_1} + {\theta_2}{x_2} + {\theta_3}{x_3})$

Не кажется ли вам, что это абсолютно то же самое, за исключением того, что используются другие символы? На самом деле, нейронная сеть является видом регрессионной модели, где вместо простых признаков используются промежуточные нейроны $a_1^{(j)}, a_2^{(j)}, \dots, a_n^{(j)}$. Начиная с входных данных $x$, каждый нейрон следующего слоя содержит информацию обо всех нейронах предыдущего слоя (их значения), и через оптимизацию алгоритма эти нейроны могут получать больше информации о входных данных $x$, что эквивалентно добавлению полиномиальных членов в гипотезу. Эти нейроны скрытого слоя являются улучшенными версиями начальных признаков, позволяющими делать более точные прогнозы.

Векторизация реализации Определим (a^{(1)} = x = \left[ \begin{array}{c} x_0 \ x_1 \ x_2 \ x_3 \end{array} \right]), (\Theta^{(1)} = \left[ \begin{array}{cccc} \Theta^{(1)}{10} & \Theta^{(1)}{11} & \Theta^{(1)}{12} & \Theta^{(1)}{13} \ \Theta^{(1)}{20} & \Theta^{(1)}{21} & \Theta^{(1)}{22} & \Theta^{(1)}{23} \ \Theta^{(1)}{30} & \Theta^{(1)}{31} & \Theta^{(1)}{32} & \Theta^{(1)}{33} \end{array} \right]),

[ \begin{aligned} a_1^{(2)} &= g(z_1^{(2)}) \ a_2^{(2)} &= g(z_2^{(2)}) \ a_3^{(2)} &= g(z_3^{(2)}) \end{aligned} ], (z^{(2)} = \left[ \begin{array}{c} z_1^{(2)} \ z_2^{(2)} \ z_3^{(2)} \end{array} \right]).

Тогда (a^{(2)} = g(\Theta^{(1)}a^{(1)}) = g(z^{(2)})).

Предсказание будет (h_\Theta(x) = a^{(3)} = g(\Theta^{(2)}a^{(2)}) = g(z^{(3)})).

Имеется (z_i^{(j)} = \Theta^{(j-1)}{i,0}a^{(j-1)}{0} + \Theta^{(j-1)}{i,1}a^{(j-1)}{1} + \ldots + \Theta^{(j-1)}{i,n}a^{(j-1)}{n}).(z^{(j)} = \Theta^{(j-1)}a^{(j-1)}), (a^{(j)} = g(z^{(j)})), с помощью этих формул можно вычислить значения каждого слоя нейронной сети.

Расширение до всех примеров:

[z^{(2)} = \Theta^{(1)}X^T], в этом случае (z^{(2)}) является матрицей размером (s_2 \times m).

(m): количество образцов в тренировочном наборе данных

(s_2): число активационных единиц во втором слое нейронной сети

Конечно, нейронные сети могут иметь несколько слоёв, а также число активационных единиц может меняться от слоя к слою:

Мы привыкли называть входной слой нулевым слоем нейронной сети; таким образом, данная нейронная сеть считается трехслойной.

8.5 Примеры и интуитивное понимание 1

Для лучшего понимания нейронных сетей рассмотрим пример однослойной нейронной сети для логических операций.

В данном примере (x_1, x_2) являются двоичными числами.

Логическое "И" (AND) операция (оба значения должны быть истинными):

Нейронная сеть для логического "И":

(\Theta^{(1)} = \begin{bmatrix}-30 & 20 & 20\end{bmatrix}), (h_\Theta(x) = g(-30 + 20x_1 + 20x_2)).

Обратившись к графику сигмоидальной функции, мы можем получить таблицу справа, то есть (h_\theta(x) \approx x_1 \ AND \ x_2). Таким образом, мы получаем нейронную сеть, способную выполнять операцию "И".

Функция сигмоида## 8.6 Примеры и интуитивное понимание 2 (Примеры и интуиция 2)

Далее мы построим более сложную нейронную сеть поэтапно.

Как показано на приведённой выше картинке, мы построили три отдельных однослойных нейронных сетей, объединив их, получаем новую нейронную сеть, способную выполнять логическую операцию XOR:

Это объединение представляет собой $\text{XNOR}=( \text{x}_1, \text{AND}, \text{x}_2 ), \text{OR} \left( \left( \text{NOT}, \text{x}_1 \right) \text{AND} \left( \text{NOT}, \text{x}_2 \right) \right)$

$\Theta^{(1)} =\begin{bmatrix}-30 & 20 & 20 \\ 10 & -20 & -20\end{bmatrix}$, $\Theta^{(2)} =\begin{bmatrix}-10 & 20 & 20\end{bmatrix}$,

$$ \begin{align*} &a^{(2)} = g(\Theta^{(1)} \cdot x) \\ &a^{(3)} = g(\Theta^{(2)} \cdot a^{(2)}) \\ &h_\Theta(x) = a^{(3)} \end{align*} $$

Таким образом, можно видеть, что характеристики могут быть последовательно усилены и извлечены больше информации до получения конечного результата. Благодаря постоянному объединению этих простых нейронных сетей, мы можем постепенно создавать всё более сложные и мощные нейронные сети, такие как те, которые используются для распознавания рукописных символов.

8.7 Многоклассовая классификация (Многоклассовая классификация)

Ранее рассматривались нейронные сети для прогнозирования одиночных значений. Для реализации многоклассовой классификации достаточно изменить выходной слой, чтобы он содержал несколько выходных единиц.

Приведём пример задачи с четырьмя классами:

Если есть четыре возможных класса, то в выходном слое должно быть четыре выходных единицы. Таким образом, $h_\Theta$ будет четырёхмерным вектором.Алгоритм многоклассовой классификации в нейронной сети можно рассматривать как расширение идеи one-vs-all. Предположим, что существует четыре возможных класса:

Если прогноз ( h_\Theta(x) = \begin{bmatrix} 0 \ 0 \ 1 \ 0 \end{bmatrix} ), это означает, что ( h_\Theta(x)_3 ), то есть объект относится к третьему классу, соответствующему мотоциклу (motorcycle).

Подведём итог

Для решения задачи многоклассовой классификации, которая требует разделения на ( K ) классов, следует использовать ( K ) выходных единиц в выходном слое. Для каждого отдельного образца прогнозирующий вектор ( h_\Theta(x) ) будет иметь размерность ( K ). На основе этого прогнозирующего вектора можно определить, к какому классу ( y^{(i)} ) относится данный образец. Обратите внимание, что прогноз и результат в нейронной сети являются ( K )-мерными векторами, а не просто скалярными значениями.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/scruel-Notes-ML-AndrewNg.git
git@api.gitlife.ru:oschina-mirror/scruel-Notes-ML-AndrewNg.git
oschina-mirror
scruel-Notes-ML-AndrewNg
scruel-Notes-ML-AndrewNg
master