Machine Learning Chinese NLP :::: Neural Networks Model Representation II - Chad Salinas ::: Data Scientist
Life and times of Chad Salinas
Chad Salinas, golf caddy, data scientist, chad rPubs, recovering chess addict, daddy caddy
1260
post-template-default,single,single-post,postid-1260,single-format-standard,qode-listing-1.0.1,qode-social-login-1.0,qode-news-1.0,qode-quick-links-1.0,qode-restaurant-1.0,ajax_fade,page_not_loaded,,qode-title-hidden,qode_grid_1300,qode-theme-ver-12.0.1,qode-theme-bridge,bridge,wpb-js-composer js-comp-ver-5.4.2,vc_responsive

Machine Learning Chinese NLP :::: Neural Networks Model Representation II

Neural Networks Model Representation II

在前面的视频里 我们 
解释了怎样用数学来 
定义或者计算 
神经网络算法的假设

在这段视频中 我想 
告诉你如何 
高效地进行计算 
并展示一个向量化的实现方法

更重要的是 我想 
让你们明白为什么 
这样表示神经网络 
是一个好的方法 并且明白 
它们怎样帮助我们学习复杂的非线性假设

以这个神经网络为例 
以前我们说 
计算出假设输出 
的步骤 
是左边的这些 
方程 通过这些方程 
我们计算出 
三个隐藏单元的激励值 
然后利用 
这些值来计算 
假设h(x)的最终输出 
接下来 我要 
定义一些额外的项 
因此 这里 
我画线的项 
把它定义为 
z上标(2) 下标1 
这样一来 就有了 
a(2)1 这个项 
等于 
g(z(2)1) 
另外顺便提一下 
这些上标2 
的意思是 
在z(2)和a(2)中 
括号中的 
2表示这些值 
与第二层相关 
即与神经网络中的 
隐藏层有关

接下来 这里的项 
我将同样定义为

z(2)2 
最后这个 
我画线的项

我把它定义为z(2)3 
这样 我们有a(2)3 
等于

g(z(2)3) 
所以这些z值都是 
一个线性组合 
是输入值x0 x1 x2 x3的 
加权线性组合 
它将会进入一个特定的神经元

现在 看一下 
这一堆数字

你可能会注意到这块 
对应了

矩阵向量运算 
类似于矩阵向量乘法 
x1乘以向量x 
观察到一点 
我们就能将 
神经网络的计算向量化了

具体而言 我们定义 
特征向量x 
为x0 x1 
x2 x3组成的向量 其中x0 
仍然等于1 
并定义 
z(2)为 
这些z值组成的向量 即z(2)1 z(2)2 z(2)3

注意 在这里 z(2) 
是一个三维向量

下面 我们可以这样

向量化a(2)1 a(2)2 a(2)3的计算 
我们只用两个步骤 
z(2)等于θ(1) 
乘以x 
这样就有了向量z(2) 
然后 a(2)等于 
g(z(2)) 
需要明白 这里的z(2)是 
三维向量 并且 
a(2)也是一个三维 
向量 因此这 
里的激励g 将s函数 
逐元素作用于 
z(2)中的每个元素 
顺便说一下 为了让我们 
的符号和接下来的 
工作相一致 
在输入层 虽然我们有 
输入x 但我们 
还可以把这些想成 
是第一层的激励 
所以 我可以定义a(1) 
等于x 因此 
a(1)就是一个向量了 
我就可以把这里的x 
替换成a(1) 
z(2)就等于θ(1)乘以a(1) 
这都是通过在输入层定义a(1)做到的

现在 就我目前所写的 
我得到了 
a1 a2 a3的值 
并且 
我应该把 
上标加上去 
但我还需要一个值 
我同样需要这个a(2)0 
它对应于 
隐藏层的 
得到这个输出的偏置单元 
当然 这里也有一个 
偏置单元 
我只是没有 
画出来 为了 
注意这额外的偏置单元 
接下来我们 
要额外加上一个a0 上标(2) 
它等于1 这样一来 
现在 
a(2)就是一个 
四维的特征向量 
因为我们刚添加了 
这个额外的 
a0 它等于 
1并且它是隐藏层的 
一个偏置单元 最后

为了计算假设的 
实际输出值 我们 
只需要计算

z(3) z(3)等于 
这里我画线的项 
这个方框里的项就是z(3)

z(3)等于θ(2) 
乘以a(2) 最后 
假设输出为h(x) 
它等于a(3) 
a(3)是输出层 
唯一的单元 
它是一个实数 你可以写成a(3) 
或a(3)1 这就是g(z(3)) 
这个计算h(x)的过程 
也称为前向传播(forward propagation)

这样命名是因为 
我们从 
输入层的激励开始 
然后进行前向传播给 
隐藏层并计算 
隐藏层的激励 然后 
我们继续前向传播 
并计算输出层的激励

这个从输入层到 
隐藏层再到输出层依次计算激励的 
过程叫前向传播

我们刚刚得到了 
这一过程的向量化 
实现方法 
如果你 
使用右边这些公式实现它 
就会得到 
一个有效的 
计算h(x) 
的方法

这种前向传播的角度

也可以帮助我们了解 
神经网络的原理 
和它为什么能够 
帮助我们学习非线性假设

看一下这个神经网络 
我会暂时盖住 
图片的左边部分 
如果你观察图中剩下的部分 
这看起来很像 
逻辑回归 
在逻辑回归中 我们用 
这个节点 即 
这个逻辑回归单元 
来预测 
h(x)的值 具体来说 
假设输出的 
h(x)将 
等于s型激励函数 
g(θ0 
xa0 
+θ1xa1

+θ2xa2 
+θ3xa3) 
其中 
a1 a2 a3 
由这三个单元给出

为了和我之前的定义 
保持一致 需要 
在这里 
还有这些地方都填上上标(2)

同样还要加上这些下标1 
因为我只有 
一个输出单元 但如果你只观察蓝色的部分 
这看起来 
非常像标准的 
逻辑回归模型 不同之处在于 
我现在用的是大写的θ 而不是小写的θ

这样做完 
我们只得到了逻辑回归

但是 逻辑回归的 
输入特征值 
是通过隐藏层计算的

再说一遍 
神经网络所做的 
就像逻辑回归 但是它 
不是使用 
x1 x2 x3作为输入特征

而是用a1 a2 a3作为新的输入特征 
同样 我们需要把

上标加上来和之前的记号保持一致

有趣的是 
特征项a1 a2 
a3它们是作为 
输入的函数来学习的

具体来说 就是从第一层 
映射到第二层的函数 
这个函数由其他 
一组参数θ(1)决定 
所以 在神经网络中 
它没有用 
输入特征x1 x2 x3 
来训练逻辑回归 
而是自己 
训练逻辑回归 
的输入 
a1 a2 a3 
可以想象 如果 
在θ1中选择不同的参数 
有时可以学习到一些 
很有趣和复杂的特征 就可以

得到一个 
更好的假设 
比使用原始输入 
x1 x2或x3时得到的假设更好 
你也可以 
选择多项式项 
x1 x2 x3等作为输入项 
但这个算法可以 
灵活地 
快速学习任意的特征项 
把这些a1 a2 a3 
输入这个 
最后的单元 实际上

它是逻辑回归 
我觉得现在描述的这个例子 
有点高端 所以 
我不知道 
你是否能理解 
这个具有更复杂特征项的 
神经网络 但是 
如果你没理解 
在接下来的两个视频里 
我会讲解一个具体的例子 
它描述了怎样用神经网络 
如何利用这个隐藏层 
计算更复杂的特征 
并输入到最后的输出层 
以及为什么这样就可以学习更复杂的假设 
所以 如果我 
现在讲的 
你没理解 请继续 
观看接下来的两个视频 
希望它们 
提供的例子能够 
让你更加理解神经网络 
但有一点 
你还可以用其他类型的图来 
表示神经网络 
神经网络中神经元 
相连接的方式 称为神经网络的架构 
所以说 架构是指 
不同的神经元是如何相互连接的 
这里有一个不同的 
神经网络架构的例子

你可以 
意识到这个第二层 
是如何工作的 
在这里 我们有三个隐藏单元 
它们根据输入层 
计算一个复杂的函数 
然后第三层 
可以将第二层 
训练出的特征项作为输入 
并在第三层计算一些更复杂的函数 
这样 在你到达 
输出层之前 即第四层 
就可以利用第三层 
训练出的更复杂的 
特征项作为输入 
以此得到非常有趣的非线性假设

顺便说一下 在这样的 
网络里 第一层 
被称为输入层 第四层 
仍然是我们的输出层 
这个网络有两个隐藏层 
所以 任何一个不是 
输入层或输出层的 
都被称为隐藏层

我希望从这个视频中 
你已经大致理解 
前向传播在 
神经网络里的工作原理: 
从输入层的激励 
开始 向前 
传播到 
第一隐藏层 然后传播到第二 
隐藏层 最终到达输出层 
并且你也知道了如何 
向量化这些计算

我发现 
这个视频里我讲了 
某些层是如何 
计算前面层的复杂特征项 
我意识到这可能 
仍然有点抽象 显得比较高端 
所以 我将 
在接下来的两个视频中 
讨论具体的例子 
它描述了怎样用神经网络 
来计算 
输入的非线性函数 
希望能使你 
更好的理解 
从神经网络中得到的复杂非线性假设
 

Any programming problem can be solved by adding a level of indirection.

– David J. Wheeler

No Comments

Sorry, the comment form is closed at this time.