神经网络学习算法

本文为《吴恩达机器学习》课程笔记

神经网络学习 Neural Nerworks Learning

模型表示

pic1.png

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})

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)})

上面表达式中a_{i}^{(j)}代表第j的第i个激活单元,\Theta(j)代表第j层到第j+1层权重矩阵。

上述模型我们也可以使用向量来表示:

x =\begin{bmatrix} x0 \\ x1 \\ x3\\ x4 \end{bmatrix}

z^{(2)} = \begin{bmatrix} z_{1}^{(2)} \\ z_{2}^{(2)} \\ z_{3}^{(2)} \\ \end{bmatrix}

z^{(2)} = \Theta^{(1)}x

Add \quad a_{0}^{(2)} = 1

z^{(3)} = \Theta^{(2)}a^{(2)}

h_{\Theta}(x) = a^{(3)} = g(z^{(3)})

z_{1}^{(2)} = \Theta_{10}^{(1)}x_{0} + \Theta_{11}^{(1)}x_{1}+ \Theta_{12}^{(1)}x_{2}+\Theta_{13}^{(1)}x_{3}

代价函数

J(\Theta) = - \frac{1}{m} \sum_{i=1}^m \sum_{k=1}^K \left[y^{(i)}_k \log ((h_\Theta (x^{(i)}))_k) + (1 - y^{(i)}_k)\log (1 - (h_\Theta(x^{(i)}))_k)\right] + \frac{\lambda}{2m}\sum_{l=1}^{L-1} \sum_{i=1}^{s_l} \sum_{j=1}^{s_{l+1}} ( \Theta_{j,i}^{(l)})^2

这个看起来复杂很多的代价函数背后的思想还是一样的,我们希望通过代价函数来观察算法预测的结果与真实情况的误差有多大,唯一不同的是,对于每一行特征,我们都会给出个预测,基本上我们可以利用循环,对每一行特征都预测个不同结果,然后在利用循环在个预测中选择可能性最高的一个,将其与中的实际数据进行比较。

正则化的那一项只是排除了每一层后,每一层的 矩阵的和。最里层的循环循环所有的行(由 +1 层的激活单元数决定),循环则循环所有的列,由该层(层)的激活单元数所决定。即:与真实值之间的距离为每个样本-每个类输出的加和,对参数进行regularization的bias项处理所有参数的平方和。

反向传播算法 Backpropagation Algorithm

反向传播算法是用来计算\frac{\partial}{\partial\Theta_{ij}^{(l)}}J_{(\Theta)}的,它的计算规则为, 以四层神经网络为例:

4Nerve.png

其中 K = 4,S_{L}=4, L=4

使用\delta来表示误差,则:\delta^(4) = a^{(4)}-y

\delta^{(l)} =\begin{cases} a^{(l)} - y & l = L \\ (\Theta^{(l)}\delta^{(l+1)})^T .*g'(z^{(l)}) & {l=2,3,...,L-1} \end{cases}

g'(z^{(l)}) = a^{(l)} .* (1-a^{(l)})

最终:

\frac{\partial}{\partial\Theta_{ij}^{(l)}}J_{(\Theta)}= a_j^{(l)}\delta_i^{(l+1)}

l代表目前所计算的是第几层。

j代表目前计算层中的激活单元的下标,也将是下一层的第个输入变量的下标。

i代表下一层中误差单元的下标,是受到权重矩阵中第行影响的下一层中的误差单元的下标。

  • 反向传播算法的具体步骤

使用\Delta_{ij}^{(l)}来表示误差矩阵, 它的含义是l层的第i个激活单元受到第j个参数影响而导致的误差

假定有训练集(x^{(1)}, y^{(1)}),...,(x^{(m)},y^{(m)}),使用了反向传播的神经网络训练过程如下:

  1. for \quad all \quad l,i,j, 初始化权值梯度\Delta^{(l)} :

\Delta^{(l)} = 0

  1. for \quad i=1 \quad to \quad m:

\begin{aligned} & 令 a^{(1)} = x^{i} \\ & 执行前向传播算法,计算各层的激活向量:a^{(l)} \\ & 通过标签向量 y^{(i)},计算输出层的误差向量:\delta^{(L)} = a^{(L)} - y^{(i)} \\ & 反向依次计算其他层误差向量:\delta^{(L-1)},\delta^{(L-2)},...,\delta^{(2)} \\ &求 \Delta_{ij}^{(l)} = a_j^{(l)}\delta_i^{(l+1)},即:\Delta^{(l)} = \delta^{(l+1)}(a^{(l)})^T\\ \end{aligned}

  1. 求各层权值的更新增量D^{(l)},连接偏置的权值不进行正规化:

D^{(l)}_{i,j} = \begin{cases} \dfrac{1}{m}(\Delta^{(l)}_{i,j} + \lambda\Theta^{(l)}_{i,j}), \quad {if j \neq 0} \\ \frac{1}{m}\Delta_{ij}^{(l)}, \quad {if \quad j=0} \end{cases}

  1. 更新各层的权值矩阵\Theta(l) ,其中\alpha为学习率:

\Theta^{(l)} = \Theta^{(l)} + \alpha D^{(l)}

神经网络算法的一般步骤

网络结构:第一件要做的事是选择网络结构,即决定选择多少层以及决定每层分别有多少个单元。

第一层的单元数即我们训练集的特征数量。

最后一层的单元数是我们训练集的结果的类的数量。

如果隐藏层数大于1,确保每个隐藏层的单元个数相同,通常情况下隐藏层单元的个数越多越好。

我们真正要决定的是隐藏层的层数和每个中间层的单元数。

训练神经网络:

  1. 参数的随机初始化
  2. 利用正向传播方法计算所有的
  3. 编写计算代价函数 的代码
  4. 利用反向传播方法计算所有偏导数
  5. 利用数值检验方法检验这些偏导数
  6. 使用优化算法来最小化代价函数
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,222评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,455评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,720评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,568评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,696评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,879评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,028评论 3 409
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,773评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,220评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,550评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,697评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,360评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,002评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,782评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,010评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,433评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,587评论 2 350

推荐阅读更多精彩内容