[机器学习] Coursera ML笔记 - 神经网络(Representation)

前言

 机器学习栏目记录我在学习Machine Learning过程的一些心得笔记,涵盖线性回归、逻辑回归、Softmax回归、神经网络和SVM等等,主要学习资料来自Standford Andrew Ng老师在Coursera的教程,同时也参考了大量网上的相关资料(在后面列出)。
 本文主要记录我在学习神经网络过程中的心得笔记,共分为三个部分:
 Neural network - Representation:神经网络的模型描述;
 Neural network - Learning:神经网络的模型训练;
 Neural network - Code:神经网络的代码实现。

引言

 在本文中,我们将神经网络看作是一个分类算法,其输出是样本属于某类别的概率值 P(y==k|x;Θ),暂时不去考虑深度学习中用于特征学习的复杂卷积神经网络。因此,本文将按照一个分类模型的维度去安排文章结构,包括模型结构及数学描述、模型训练等,记录我在学习神经网络过程中的心得和思考。
 注意,
 在不同的教程、论文以及其他资料中,对同一个算法或模型的描述多少会有一些差异,但本质的原理都是一致的,例如在神经网络的相关资料中,有些资料描述模型时是将偏置单元与隐藏单元一起计算,有些资料却是将偏置单元单独计算,但无论怎么描述,偏置单元的作用都是一致的。
 本文是我在学习神经网络模型描述(Representation)时的笔记,主要以Andrew Ng老师在Coursera课程中以及UFLDL Tutorial中的关于神经网络模型的资料为主,文章小节安排如下:
 1)神经网络的背景
 2)神经网络模型
 3)激活函数(activation function)
 4)假设函数(hypothesis function)
 5)模型对比:Logistic regression VS Neural Network

神经网络的背景

 神经网络算法的来源可以从字面意思看出来,也就是模拟大脑的工作机制,实现学习、认知、决策等复杂功能。关于神经网络的背景介绍可以参看下面一段描述(摘自Coursera Andrew Ng的课程资料(ML wiki page)):
 Neural networks are limited imitations of how our own brains work. They’ve had a big recent resurgence because of advances in computer hardware.
 There is evidence that the brain uses only one “learning algorithm” for all its different functions. Scientists have tried cutting (in an animal brain) the connection between the ears and the auditory cortex and rewiring the optical nerve with the auditory cortex to find that the auditory cortex literally learns to see.
 This principle is called “neuroplasticity” and has many examples and experimental evidence.
 ———————————————————————
 也就是说,实验证明大脑利用同一个学习算法实现了听觉、视觉等等所有的功能,这也是神经网络算法美好的愿景。关于神经网络的起源和发展历史等具体背景资料这里不做介绍,感兴趣的朋友可以参考网上的资料和一些综述性论文。

神经网络模型

1)神经元(neuron)
 这里写图片描述
 神经元,或称神经单元/神经节点,是神经网络基本的计算单元,其计算函数称为激活函数(activation function),用于在神经网络中引入非线性因素,可选择的激活函数有:Sigmoid函数、双曲正切函数(tanh)、ReLu函数(Rectified Linear Units)等。

2)神经网络(neural network)
 二分类神经网络
 多分类神经网络 
 第一个网络结构对应一个二分类问题;
 第二个网络结构对应一个多分类问题(K=4);
 可以看出,神经网络其实就是许多神经元的组合,基于这样一个模型结构,神经网络可以完成复杂的非线性分类任务
 注意,

3)神经网络中的层(layer)和节点(node)
 >>Layer
 在上面的神经网络中,
 最左边的层称为输入层(input layer),对应样本特征;
 最右边的层称为输出层(output layer),对应预测结果;
 >>Node
 输入层节点:对应样本的特征输入,每一个节点表示样本的特征向量 x 中的一个特征变量或称特征项;
 输出层节点:对应样本的预测输出,每一个节点表示样本在不同类别下的预测概率;
 隐藏层节点:对应中间的激活计算,称为隐藏单元(hidden unit),在神经网络中隐藏单元的作用可以理解为对输入层的特征进行变换并将其层层传递到输出层进行类别预测
 
 备注,
 神经网络中的隐层和隐藏单元是比较难理解的概念,同时也是神经网络的关键,一开始未必能够准确的理解,但一定要在学习和使用过程中反复理解。
 
4)神经网络符号描述
 神经网络中多出了权重矩阵(参数矩阵)、激活值的概念,其实对这些概念的理解最好是参看英文原文,如下(摘自ML wiki page):
 这里写图片描述

5)偏置单元
 偏置单元(bias unit),在有些资料里也称为偏置项(bias term)或者截距项(intercept term),它其实就是函数的截距,与线性方程 y=wx+b 中的 b 的意义是一致的。在 y=wx+b中,b表示函数在y轴上的截距,控制着函数偏离原点的距离,其实在神经网络中的偏置单元也是类似的作用。
 因此,神经网络的参数也可以表示为:(W, b),其中W表示参数矩阵,b表示偏置项或截距项。

 神经网络结构中对偏置单元的计算处理方式有两种,
 第一,设置偏置单元=1,并在参数矩阵 Θ 中设置第 0 列对应偏置单元的参数,对应的神经网络如下:
 神经网络架构
 其中,x0 是第一层的偏置单元(设置为1),Θ(1)10 是对应该偏置单元 x0 的参数;a(2)0 是第二层的偏置单元,Θ(2)10 是对应的参数。
 在计算激活值时按照(以a(2)1为例):
 激活值计算公式

 第二,设置偏置单元,不在参数矩阵中设置对应偏置单元的参数,对应的神经网络如下:
 神经网络架构
 其中,b(1) 是 W(1) 对应的偏置单元向量,b(2) 是 W(2) 对应的偏置单元向量,b(1)1 是对应 a(2)1 的偏置单元。注意,此时神经网络的参数表示更改为:(W, b)
 在计算激活值时按照:
 激活值计算公式
 综上,
 两者的原理是一致的,只是具体的实现方式不同。
 其实在大部分资料和论文中看到的神经网络的参数都是表示为:(W, b),其中W代表weight,b代表bias。包括在UFLDL Tutorial中也是采用 (W, b) 表示,只是在Coursera上Andrew Ng老师的在线教程中看到将神经网络参数表示为 Θ,个人还是更喜欢 (W, b) 这种表示,很清晰。

激活函数(activation function)

 神经单元的计算过程称为激活(activation),是指一个神经元读入特征,执行计算,并产生输出的过程。
 激活函数是非线性函数,用于为神经网络模型加入非线性因素,使其能够处理复杂的非线性分类任务,一般来说神经网络选择Sigmoid函数,其他也可以选择双曲正切函数(tanh)、ReLu函数(Rectified Linear Units)等。
 计算公式如下:
 Sigmoid函数(0~1):
 Sigmoidh函数
 
 Tanh函数(-1~1):
 Tanh函数

 ReLu函数(0~+∞):
 ReLu函数

 激活函数对比如下:
 激活函数对比

 激活函数是在不断发展的,在神经网络的发展过程中,科学家们逐步发现了许多具有不同的性质的激活函数,可以更好地促进神经网络在实际问题中的应用。
 例如,2001年,神经科学家Dayan、Abott从生物学角度,模拟出了脑神经元接受信号更精确的激活模型,提出了近似生物神经激活函数(Softplus function),对比如下:
 激活函数对比
 
 目前,ReLU函数在神经网络模型研究和实际应用中应用的更多,因为使用sigmoid或tanh作为激活函数做无监督学习时,会遇到梯度消失问题(gradient vanishing problem)导致无法收敛,而ReLU可以避免这个问题;另一方面,基于ReLU这种线性激活函数的神经网络的计算开销也是相对较低的。
 备注,
 其实,激活函数的作用可以看作是从原始特征学习出新特征,或者说是将原始特征从低维空间映射到高维空间。一开始也许无法很好的理解激活函数的意义和作用,但一定要记住,引入激活函数是神经网络具有优异性能的关键所在,多层级联的结构加上激活函数,令多层神经网络可以逼近任意函数,从而可以学习出非常复杂的假设函数。
 关于激活函数的理解以及不同激活函数的对比可以参考如下文章:
 参考1:知乎:神经网络激励函数的作用是什么?有没有形象的解释?
 参考2:知乎:请问人工神经网络中的activation function的作用具体是什么?为什么ReLu要好过于tanh和sigmoid function?
 参考3:ReLu(Rectified Linear Units)激活函数


假设函数(hypothesis function)

 如果神经网络采用sigmoid函数作为激活函数,那么其假设函数就与逻辑回归模型一致,也是一个Sigmoid函数,可以看作是一个条件概率:P(y=1|x; Θ) 。
 对于神经网络,其预测值的计算是一个逐层递进的过程,以下面的神经网络为例,
 神经网络模型
 其预测值的计算过程如下:
 >>计算隐藏单元的激活值
 计算隐藏单元的激活值
 >>计算hθ(x)
 计算hθ(x)
 可以看到,
 无论网络结构中有多少个隐层,最后在计算假设函数时,其实是与逻辑回归一致的。只是逻辑回归直接对样本特征计算,而神经网络中是对隐藏单元的激活值计算。
 从该计算过程可以看出来,神经网络在对样本进行预测时,是从第一层(输入层)开始,层层向前计算激活值(称为激活-activation),直观上看这是一种层层向前传播特征或者说层层向前激活的过程,最终计算出 hΘ(x) ,这个过程称之为前向传播(forward propagation)
 
 备注,
 神经网络计算输出的过程称为前向传播,无论多复杂的神经网络,在前向传播过程中其实也就是在不断的计算激活函数,从输入层一直计算到输出层,最后得到样本的预测标签。


模型对比:Logistic regression VS Neural Network

(1)基础模型对比
 只具有一层(一个输入层)的神经网络模型,其实就是标准的逻辑回归模型,对比如下:
 >>逻辑回归
 逻辑回归
 >>神经网络
 神经网络
 可以说,神经网络就是由一个个逻辑回归模型连接而成的,它们彼此作为输入和输出。

(2)多分类模型对比
 在逻辑回归中,决策边界由 θ’x=0 决定,随着参数项的增加,逻辑回归可以在原始特征空间学习出一个非常复杂的非线性决策边界(也就是一个复杂非线性方程);
 在神经网络中,决策边界由 ΘX=0 决定(这只是一个象征性表达式,Θ表示所有权重矩阵,X表示特征加上所有隐藏单元),其实神经网络算法并没有直接在原始特征空间学习决策边界,而是将分类问题映射到了一个新的特征空间,通过解决新特征空间的分类问题(学习决策边界),从而对应解决原始特征空间的分类问题。
  这里写图片描述

(3)决策边界对比
 在逻辑回归中,决策边界由 θ’x=0 决定,随着参数项的增加,逻辑回归可以在原始特征空间学习出一个非常复杂的非线性决策边界(也就是一个复杂非线性方程)
 在神经网络中,决策边界由 ΘX=0 决定(这只是一个象征性表达式,Θ表示所有权重矩阵,X表示特征加上所有隐藏单元),其实神经网络算法并没有直接在原始特征空间学习决策边界,而是将分类问题映射到了一个新的特征空间,通过解决新特征空间的分类问题(学习决策边界),从而对应解决原始特征空间的分类问题。 
 
(4)性能对比
 在决策边界对比部分可以看出,逻辑回归和神经网络都可以学习复杂非线性决策边界,那么这里就存在这样一个问题:
 同样是解决复杂非线性分类问题,神经网络相对于逻辑回归的优势在哪里?
 参考Andrew Ng老师给出的例子(详情可参考课程资料),如果给定基础特征的数量为100,那么在利用逻辑回归解决复杂分类问题时会遇到特征项会爆炸增长,造成过拟合以及运算量过大问题。
 例如,
 在n=100的情况下构建二次项特征变量,最终有5050个二次项。
 随着特征个数 n 的增加,二次项的个数大约以 n^2 的量级增长,其中 n 是原始项的个数,二次项的个数大约是 (n^2)/2 个。
 这是非常糟糕的情况,并且无法在一开始就进行优化,因为很难确定哪一个高次项是真正有用的,所以必须找到所有的二次项进行训练,在训练之后才能通过不同的权重判断哪一项是有用的。
 而对于神经网络,可以通过隐层数量和隐藏单元数量来控制假设函数的复杂程度,并且在计算时只计算一次项特征变量。其实本质上来说,神经网络是通过这样一个网络结构隐含地找到了所需要的高次特征项,从而化简了繁重的计算。

参考资料

UFLDL Tutorial
http://ufldl.stanford.edu/tutorial/
Coursera - Machine learning( Andrew Ng)
https://www.coursera.org/learn/machine-learning
Coursera -ML:Neural Networks: Representation
https://share.coursera.org/wiki/index.php/ML:Neural_Networks:_Representation
Coursera -ML:Neural Networks: Learning
https://share.coursera.org/wiki/index.php/ML:Neural_Networks:_Learning

结语

 下一篇文章会撰写关于神经网络模型训练方面的心得笔记,谢谢!

 本文的文字、公式和图形都是笔者根据所学所看的资料经过思考后认真整理和撰写编制的,如有朋友转载,希望可以注明出处:
 [机器学习] Coursera ML笔记 - 神经网络(Representation)
 http://blog.csdn.net/walilk/article/details/50278697

  • 15
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
### 回答1: Coursera-ml-andrewng-notes-master.zip是一个包含Andrew Ng的机器学习课程笔记和代码的压缩包。这门课程是由斯坦福大学提供的计算机科学和人工智能实验室(CSAIL)的教授Andrew Ng教授开设的,旨在通过深入浅出的方式介绍机器学习的基础概念,包括监督学习、无监督学习、逻辑回归、神经网络等等。 这个压缩包中的笔记和代码可以帮助机器学习初学者更好地理解和应用所学的知识。笔记中包含了课程中涉及到的各种公式、算法和概念的详细解释,同时也包括了编程作业的指导和解答。而代码部分包含了课程中使用的MATLAB代码,以及Python代码的实现。 这个压缩包对机器学习爱好者和学生来说是一个非常有用的资源,能够让他们深入了解机器学习的基础,并掌握如何运用这些知识去解决实际问题。此外,这个压缩包还可以作为教师和讲师的教学资源,帮助他们更好地传授机器学习的知识和技能。 ### 回答2: coursera-ml-andrewng-notes-master.zip 是一个 Coursera Machine Learning 课程的笔记和教材的压缩包,由学生或者讲师编写。这个压缩包中包括了 Andrew Ng 教授在 Coursera 上发布的 Machine Learning 课程的全部讲义、练习题和答案等相关学习材料。 Machine Learning 课程是一个介绍机器学习的课程,它包括了许多重要的机器学习算法和理论,例如线性回归、神经网络、决策树、支持向量机等。这个课程的目标是让学生了解机器学习的方法,学习如何使用机器学习来解决实际问题,并最终构建自己的机器学习系统。 这个压缩包中包含的所有学习材料都是免费的,每个人都可以从 Coursera 的网站上免费获取。通过学习这个课程,你将学习到机器学习的基础知识和核心算法,掌握机器学习的实际应用技巧,以及学会如何处理不同种类的数据和问题。 总之,coursera-ml-andrewng-notes-master.zip 是一个非常有用的学习资源,它可以帮助人们更好地学习、理解和掌握机器学习的知识和技能。无论你是机器学习初学者还是资深的机器学习专家,它都将是一个重要的参考工具。 ### 回答3: coursera-ml-andrewng-notes-master.zip是一份具有高价值的文件,其中包含了Andrew Ng在Coursera上开授的机器学习课程的笔记。这份课程笔记可以帮助学习者更好地理解掌握机器学习技术和方法,提高在机器学习领域的实践能力。通过这份文件,学习者可以学习到机器学习的算法、原理和应用,其中包括线性回归、逻辑回归、神经网络、支持向量机、聚类、降维等多个内容。同时,这份笔记还提供了很多代码实现和模板,学习者可以通过这些实例来理解、运用和进一步深入研究机器学习技术。 总的来说,coursera-ml-andrewng-notes-master.zip对于想要深入学习和掌握机器学习技术和方法的学习者来说是一份不可多得的资料,对于企业中从事机器学习相关工作的从业人员来说也是进行技能提升或者知识更新的重要资料。因此,对于机器学习领域的学习者和从业人员来说,学习并掌握coursera-ml-andrewng-notes-master.zip所提供的知识和技能是非常有价值的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值