Ng Enda Machine Learning-5-Обучение нейронных сетей

машинное обучение
Ng Enda Machine Learning-5-Обучение нейронных сетей

Продюсер: Ю Эр Хат
Автор: Питер
Редактор: Питер

Ng Enda Machine Learning-5-Обучение нейронных сетей

Эта статья доработана на основе нейронной сети из предыдущего раздела, в том числе:

  • Функция стоимости нейронной сети
  • Метод обратного распространения и объяснение
  • градиентный тест
  • Краткое изложение нейронных сетей

Функция стоимости нейронной сети

Описание параметра

Объясните метод маркировки нескольких параметров:

  • mm: количество обучающих выборок
  • x,yх, у: Входные и выходные сигналы
  • LL: представляет количество слоев нейронной сети
  • SI{S}_{I}: количество нейронов в каждом слое
  • Sl{S}_{l}: указывает количество выходных нейронов

Обсуждение категории

В основном есть две категории: бинарная классификация и мультиклассовая классификация.

Две категории:SL=0,y=0/1S_L=0,y=0/1; вывод - действительное число

KKКлассификация классов:SL=k,yi=1S_L=k,y_i=1Указывает количествоiiклассовая ситуация. Выход представляет собой многомерный вектор

функция стоимости

Функция стоимости в логистической регрессии (LR):

J\left(\theta \right)=-\frac{1}{m}\left[\sum_\limits{i=1}^{m}{y}^{(i)}\log{h_\theta({x}^{(i)})}+\left(1-{y}^{(i)}\right)log\left(1-h_\theta\left({x}^{(i)}\right)\right)\right]+\frac{\lambda}{2m}\sum_\limits{j=1}^{n}{\theta_j}^{2}

В логистической регрессии есть только одна выходная переменная, называемая скалярной.scalar.

Но в нейронной сети будет несколько выходных переменных,hθ(x)h_\theta(x)ЯвляетсяKKразмерный вектор.

Предположим, первыйiiвыходная функция:

\newcommand{\subk}[1]{ #1_k } hθ(x)еRKh_\theta\left(x\right)\in \mathbb{R}^{K} (hθ(x))i=ithoutput{\left({h_\theta}\left(x\right)\right)}_{i}={i}^{th} \text{output}

функция стоимостиJJВыражается как:

J(Θ)=1m[i=1mk=1kyk(i)log\subk(hΘ(x(i)))+(1yk(i))log(1\subk(hΘ(x(i))))]+λ2ml=1L1i=1slj=1sl+1(Θji(l))2J(\Theta) = -\frac{1}{m} \left[ \sum\limits_{i=1}^{m} \sum\limits_{k=1}^{k} {y_k}^{(i)} \log \subk{(h_\Theta(x^{(i)}))} + \left( 1 - y_k^{(i)} \right) \log \left( 1- \subk{\left( h_\Theta \left( x^{(i)} \right) \right)} \right) \right] + \frac{\lambda}{2m} \sum\limits_{l=1}^{L-1} \sum\limits_{i=1}^{s_l} \sum\limits_{j=1}^{s_{l+1}} \left( \Theta_{ji}^{(l)} \right)^2

объяснять:

  1. Ожидается, что будет наблюдаться ошибка между результатами, предсказанными алгоритмом, и реальной ситуацией через функцию стоимости.
  2. Каждый ряд функций будет иметьKKпрогнозы, используя цикл для прогнозирования каждой строки
  3. существуетKKВыберите среди прогнозов тот, который имеет наибольшую вероятность, и сравните его с фактическими данными.yyСравнивать
  4. Член регуляризации исключает каждое смещениеθ0\theta_0После этого каждый слойθ\thetaсуммирование матриц
  5. параметрjj(Зависит отsl+1s_l+1Количество единиц активации в слое определяет) зациклить все строки,ii(Зависит отsls_lКоличество единиц активации в слое определяет) цикл по всем столбцам

Алгоритм обратного распространения

Для вычисления частной производной функции стоимости в нейронной сетиJ(Θ)Θij(l)\frac{\partial J(\Theta)}{\partial \Theta_{ij^{(l)}}}, Необходимо использоватьОбратное распространение

  • Сначала вычислите ошибку последнего слоя
  • Погрешность каждого слоя вычисляется в обратном порядке слой за слоем до предпоследнего слоя.

Пример прямого распространения

Предположим, есть выборка данных:

(x(1),y(1))({x^{(1)}},{y^{(1)}})

Нейронная сеть имеет 4 слоя, из которыхK=SL=L=4{K=S_L=L=4}

прямое распространениеОн вычисляется послойно от входного слоя к выходному слою в порядке нейронной сети.

Пример обратного распространения

  1. Рассчитать по ошибке последнего слоя:

    error = предсказание активированного юнитаa(4){a}^{(4)}между фактическим значениемy(k)y^{(k)}разница между

  2. использоватьδ\deltaпредставляет ошибку,Ошибка = прогнозируемое значение модели - истинное значение

    δ(4)=a(4)y\delta^{(4)} = a^{(4)} -y

  3. Ошибка предыдущего слоя

δ(3)=(Θ(3))Tδ(4)*g'(z(3))\delta^{(3)}=\left({\Theta^{(3)}}\right)^{T}\delta^{(4)}\ast g'\left(z^{(3)}\right)

вg'(z(3))g'(z^{(3)})даSSПроизводная функции формы, конкретное выражение:

g'(z(3))=a(3)*(1a(3))g'(z^{(3)})=a^{(3)}\ast(1-a^{(3)})

  1. Ошибка предыдущего слоя

δ(2)=(Θ(2))Tδ(3)*g'(z(2)) \delta^{(2)}=(\Theta^{(2)})^{T}\delta^{(3)}\ast g'(z^{(2)})

Первый слой — входная переменная, ошибки нет

  1. Предположениеλ=0\lambda=0, если не делать регуляризацию

J(Θ)Θijl=aj(l)θi(l+1)\frac{\partial J(\Theta)}{\partial \Theta_{ij}^{l}}=a_j^{(l)}\theta_i^{(l+1)}

Объясните значение каждого индекса в приведенной выше формуле:

  • llпредставляет слой

  • jjПредставляет индекс единицы активации на вычислительном уровне.

  • iiпредставляет индекс единицы ошибки

алгоритм

  • Рассчитайте единицы активации каждого слоя, используя метод прямого распространения

  • Используйте реальные результаты обучающего набора и результаты прогнозирования нейронной сети, чтобы найти ошибку последнего слоя

  • Наконец, используйте ошибку, чтобы вычислить все ошибки до второго уровня, используя метод обратного распространения.

    Просить:(l)ij\triangle {(l)}_{ij}После этого можно рассчитать частные производные функции стоимости После этого можно рассчитать частные производные функции стоимости:

    D(l)ijD{(l)}_{ij}

Интуитивное понимание обратного распространения

Принцип прямого распространения

  • 2 блока ввода, 2 скрытых слоя (исключая блоки смещения), 1 блок вывода
  • верхний индексiiПредставляет слой, а нижний индекс представляет объект или атрибут

На картинке небольшая проблема, посмотрите правый нижний угол скриншота! ! !

Согласно выводу, полученному из описанного выше метода обратного распространения:

Z1(3)=Θ10(2)*1+Θ11(2)*a1(2)+Θ12(2)*a2(2)Z^{(3)}_{1}=\Theta_{10}^{(2)}*1+\Theta_{11}^{(2)}*a^{(2)}_1+\Theta_{12}^{(2)}*a^{(2)}_2

Принцип обратного распространения

)

расширение параметра

В приведенной выше формуле показано, как использовать метод обратного распространения для вычисления производной функции стоимости.Здесь мы вводим, как преобразовать параметрыРасширение от матричной формы до векторной формы

градиентный тест

Как решить производную в точке

Как получить определенный параметр θθ в функции стоимости

Qkqq6U.png

Сводка по нейронной сети

Первая работа

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

  • Количество единиц в первом слое — это количество функций в нашем обучающем наборе.
  • Количество единиц в последнем слое — это количество классов для результата нашего тренировочного набора.
  • Если количество скрытых слоев больше 1, убедитесь, что количество единиц в каждом скрытом слое одинаково.Обычно, чем больше количество единиц скрытого слоя, тем лучше.

Шаги обучения нейронной сети

  1. параметрическийслучайная инициализация
  2. использоватьпрямое распространениеспособ вычислить всеhθ(x)h_{\theta}(x)
  3. написатьВычислить функцию стоимости JJкод
  4. использоватьобратное распространениеметод вычисляет все частные производные
  5. использоватьЧисленный тестметод проверки этих частных производных
  6. использоватьАлгоритм оптимизации для минимизации функции стоимости