乐趣区

关于机器学习:机器学习8吴恩达笔记

通过异或学习例子了解神经网络如何计算简单的非线性函数

异或

  • 为了学习异或这个显然是非线性判断边界的例子,咱们先看一些简略的线性判断边界例子
逻辑与(&&)

逻辑或(||)

逻辑非

异或的实现

  • 通过这个例子咱们会发现,神经网络可能让咱们失去更加简单的函数。且层数越多,能失去的函数就越简单

如何用神经网络做多类别分类

  • 多类别分类利用范畴比拟广,像手写数字辨认就属于多分类(0~9 共分 10 个类别)。咱们用神经网络解决多分类问题时,使用了逻辑回归的多分类的一对多思维
例子
  • 当初咱们要辨认图片是人、汽车、摩托车还是大车,这就是一个多分类问题。
  • 当二分类问题时,咱们只有建设一个输入单元,输入 0 或者 1 的实数;当多分类问题时,咱们则建设四个输入单元,并且输入值从实数变成了四维向量。这里就使用了逻辑回归的一对多思维,把一类作为 1,其余的看做一类都作为 0.

代价函数的给出

  • 神经网络的代价函数和逻辑回归的代价函数相似。咱们先给出逻辑回归的代价函数,这里要留神的是,正则化项不含参数 0.
  • 接着,咱们看一下神经网络的代价函数。与逻辑回归不同在于,逻辑回归仅仅是一个输入单元,而神经网络则是 k 个输入单元的求和,即输入层所有单元的求和。而只管神经网络的正则化项很简单,但实际上就是把除了每一层的参数 0 外的所有参数项加起来。(这里参数 0 加进去也无所谓,只是出于习惯咱们个别不加)

用反向流传算法优化代价函数

  • 在给出代价函数之后,咱们要设法找到参数,使代价函数获得最小值。在找到参数最小化代价函数的过程中,咱们通常应用梯度降落算法或者其余的高级优化算法。这些算法往往都须要参数的偏导数项,因而,最小化代价函数的要害,在于如何计算出各个参数的偏导数项。

从只有一个训练样本说起
  • 首先,咱们令整个训练集只蕴含一个训练样本,咱们先应用前向流传算法,看一下当咱们给定输入的时候,假如函数输入的后果

  • 下边咱们来看一下,如何应用反向流传算法计算偏导数项:


咱们要增加 theta 这个误差参数项,示意第 l 层第 j 个单元的误差。接下来咱们看一下如何计算 theta 这个误差参数项。
(1)输入层:a4(假如函数的输入)- 训练集的 y 值
(2)前边误差项的计算:前边的层和后边一层的参数矩阵的转置矩阵 * 后边一层的误差参数矩阵,再点乘一个导数项。这个导数项实际上 =a3 乘(1-a3)
(3)第一层没有误差参数,因为第一层输出的是训练集样本,不可能有误差

  • 从上边的过程,咱们就能够看出反向流传名字的由来:从输入层开始计算参数误差,往前一层层的返回,始终计算到第二层
  • 在通过反向流传算法失去误差参数后,咱们就能够利用误差参数积攒失去偏导数项了。通过 for 循环积攒偏导数项,分参数为 0 和不为 0 两种状况探讨。在计算失去偏导数项后,就能够用在梯度降落法中了

  • 综上,反向流传就是先由输入层反向直到第二层,计算失去每层的误差参数。而后利用误差参数积攒偏导数项
退出移动版