Coursera课程地址
因为Coursera的课程还有考试和论坛,后续的笔记是基于Coursera
https://www.coursera.org/learn/machine-learning/home/welcome
神经网络 Neural Networks
1. 非线性假设 Non-linear Classification
使用具有许多特征的复杂数据集执行线性回归非常笨拙。假设您想从包含所有二次项的三 (3) 个特征中创建一个假设
这给了我们 6 个特征。计算所有多项式项有多少特征的确切方法是具有重复的组合函数:http://www.mathsisfun.com/combinatorics/combinations-permutations.html
在这种情况下,我们采用三个特征的所有二元素组合:
(注意:您不必知道这些公式,我只是发现它有助于理解)。
对于 100 个特征,结果约等于二次方的一半,我们会得到
我们可以用所有的二次项来近似我们得到的新特征数量的增长O(n^2/2). 如果你想在你的假设中包含所有三次项,特征将在O(n^3).
这些是非常陡峭的增长,因此随着我们特征数量的增加,二次或三次特征的数量增加得非常快并且很快变得不切实际。
示例:让我们的训练集是一组 50 x 50 像素的黑白照片,我们的目标是对哪些是汽车照片进行分类。如果我们比较每对像素,那么我们的特征集大小为 n = 2500。
现在假设我们需要做一个二次假设函数。使用二次特征,我们的增长是O(n^2/2). 所以我们的总特征将是2500^2 / 2 = 3125000
,这是非常不切实际的。
当我们有具有许多特征的复杂假设时,神经网络提供了一种执行机器学习的替代方法。
计算机视觉,判断是否是汽车。
提取车的特征图片,进行分析
2. 神经元和大脑 Neurons and the brain
神经网络是对我们自己大脑工作方式的有限模仿。由于计算机硬件的进步,它们最近有了很大的复苏。
有证据表明,大脑的所有不同功能仅使用一种“学习算法”。科学家们尝试切断(在动物大脑中)耳朵和听觉皮层之间的连接,并用听觉皮层重新连接视神经,以发现听觉皮层确实学会了看东西。
这个原理叫做“神经可塑性”,有很多例子和实验证据。
触觉皮层连接到视觉信息输入,触觉皮层学会了去看。
神经可塑性的显示例子:
- 摄像头采集信息,然后通过舌头触觉传递,通过触觉能学会看到信息;
- 没有眼球的人通过声呐能判断物体的远近;
- 触觉腰带,能够传递方向信息,就有了鸟辨别方向的能力;
- 青蛙装上了第三只眼,它能学习运用第三只眼。
3. 模型表示 I Model representation I - Neural Networks Representation
让我们来看看我们将如何使用神经网络来表示假设函数。
Dendrite: 神经树突
Axon: 神经轴突
Cell Body: 细胞体
Nucleus: 细胞核
Myelin sheath: 髓磷脂鞘
Schwann cell: 施旺细胞
Node of Ranvier: 兰氏结
Axon terminal: 轴突终末
在一个非常简单的层面上,神经元基本上是将输入(树突)作为电输入(称为“尖峰”)的计算单元,这些电输入被引导到输出(轴突)。
在我们的模型中,我们的树突就像输入特征 X1 ⋯X n
,输出是我们假设函数的结果:
在这个模型中,我们的 x0 输入节点有时被称为“偏置单元”。它总是等于 1。
在神经网络中,我们使用与分类相同的逻辑函数:
然而,在神经网络中,我们有时将其称为 sigmoid(逻辑)激活函数。
我们的“theta”参数有时在神经网络模型中被称为“权重”。
在视觉上,一个简单的表示看起来像:
我们的输入节点(第 1 层)进入另一个节点(第 2 层),并作为假设函数输出。
第一层称为“输入层”,最后一层称为“输出层”,它给出根据假设计算的最终值。
我们可以在输入层和输出层之间有中间节点层,称为“隐藏层”。
我们标记这些中间或“隐藏”层节点 ,
并称它们为“激活单元”。
如果我们有一个隐藏层,它在视觉上看起来像:
每个“激活”节点的值按如下方式获得:
这就是说我们通过使用 3×4 参数矩阵来计算我们的激活节点。我们将每一行参数应用于我们的输入以获得一个激活节点的值。我们的假设输出是应用于激活节点值总和的逻辑函数,这些值已乘以另一个参数矩阵Θ(2)包含我们第二层节点的权重。
每层都有自己的权重矩阵,Θ(j) 这些权重矩阵的维度确定如下:
4. 模型表示二 Model representation II - Neural Networks Representation
在本节中,我们将对上述函数进行矢量化实现。我们将定义一个新变量
包含我们 g 函数中的参数。在我们之前的示例中,如果我们将变量 z 替换为所有参数,我们将得到:
换句话说,对于层 j=2 和节点 k,变量 z 将是:
x 和的向量表示 z^(j)是:
现在我们可以获得层 j 的激活节点向量,如下所示:
我们的函数 g 可以按元素应用于我们的向量 z^(j)然后我们可以在计算后向第 j 层添加一个偏置单元(等于 1) a(j).这将是元素a_0(j)一种 并且将等于 1。
为了计算我们的最终假设,让我们首先计算另一个 z 向量:
我们通过乘以下一个 theta 矩阵之后得到这个最终的 z 向量 Θ(j-1) 使用我们刚刚获得的所有激活节点的值。
最后一个 theta 矩阵 Θ(j)将只有一行,因此我们的结果是一个数字。
然后我们得到我们的最终结果:
请注意,在最后一步中,在第 j 层和第 j+1 层之间,我们正在做与逻辑回归中完全相同的事情。
在神经网络中添加所有这些中间层使我们能够更优雅地产生有趣且更复杂的非线性假设。
5. 例子和直觉 I Examples and intuitions I - Neural Networks: Representation
应用神经网络的一个简单示例是通过预测 X1 和 X2,这是逻辑“与”运算符,并且仅当两者都成立时才为真 X1 和 X2。
我们的函数图将如下所示:
请记住X0 是我们的偏差变量,始终为 1。让我们将第一个 theta 矩阵设置为:
这将导致我们假设的输出只有在两者都为正时 X1 和 X2 是 1. 换句话说:
神经网络或OR函数
因此,我们通过使用小型神经网络而不是使用实际的与门构建了计算机中的基本运算之一。神经网络也可用于模拟所有其他逻辑门。
6. 例子和直觉 II Examples and intuitions II - Neural Networks: Representation
Nor 逆运算的神经网络实现
Θ^(1) AND、NOR 和 OR 的矩阵是:
我们可以将这些组合起来得到 XNOR 逻辑运算符(如果 X1 和 X2都是 0 或都是 1)。
对于第一层和第二层之间的过渡,我们将使用 Θ^(1)组合了 AND 和 NOR 的值的矩阵:
Θ(1) =[ −30 20 20
10 −20 −20 ]
对于第二层和第三层之间的过渡,我们将使用 Θ^(2)使用 OR 值的矩阵:
让我们写出所有节点的值:
我们有使用两个隐藏层的 XNOR 运算符!
神经网络直观认识:
神经网络算法识别手写数字
7. 多类分类 Multi-class classification - Neural Networks: Representation
识别图片是行人Pedestrian,汽车,摩托车,货车中的一种。
为了将数据分类为多个类别,我们让假设函数返回一个值向量。假设我们想将我们的数据分类为四个最终结果类之一:
我们的最后一层节点,当乘以它的 theta 矩阵时,将产生另一个向量,我们将在其上应用 g()
逻辑函数来获得假设值向量。
我们对一组输入的假设可能如下所示:
在这种情况下,我们的结果类是第三个,或者 HΘ(x)3 我们可以将结果类集定义为 y:
我们对一组输入的假设的最终值将是 y 中的一个元素。
参考
https://www.coursera.org/learn/machine-learning/resources/RmTEz
https://d3c33hcgiwev3.cloudfront.net/_48018e8190fedff87b572550690056d2_Lecture8.pdf
https://www.coursera.org/learn/machine-learning/supplement/jtFHI/lecture-slides