课程地址:https://class.coursera.org/ntumltwo-002

重要!重要!重要~

一、神经网络(NNet)的动机

神经网络有很久的历史,由感知机(perceptron)模型发展而来。单个的perceptron只能处理线性问题,通过组合(融合)多个perceptron,相当于一层的神经网络,能提高perceptron的能力,很容易实现逻辑与、或、非,以及凸集合,但不能实现异或运算。多层次的感知机(perceptrons)模型,不仅能实现异或,功能更为强大。最基本的神经网络也就是一个具有多个层次的perceptron的模型,像飞机借鉴鸟类的飞行一样,神经网络模型借鉴了生物体神经元信息传递的过程。

二、神经网络

神经网络是个功能非常强大的模型,输出层可以输出任意范围的数,因此根据需求可以选择分类,回归、以及像LR一样的软分类的任何一种。神经网络中的每一个神经元输入是前一层网络的线性加权的结果,考虑整个网络使用线性模型会使得神经网络能力受限、sign阶梯函数不易优化等的缺点,神经元自身的转换函数选择了与sign阶梯相似的“S”形tanh函数。一个完整的神经网络的设计是比较复杂的,需要确定网络的结构、网络层数、输入、输出、神经元的转换函数、阀值(偏置)、每个连接的权重。林老师在课上将神经网络的物理解释是每一层都通过转换来从数据学习,提取与每一层连接权相匹配的模式,不是很理解/(ㄒoㄒ)/~~

神经网络的属性:

  1. 每个神经元的输出,称为该神经元的能量
  2. 相邻层神经元节点之间的连接有个权重Wij,其值在[-1,1]之间
  3. 除输出层外,每层都会有个阀值,也称为偏置,其值在[0,1]之间
  4. 隐藏层之间的每个神经元的输出为该节点输入值的非线性变换(tanh)

三、神经网络的训练和BP算法

      训练神经网络最常用的是BP(Backpropagation)算法,使用BP算法训练神经网络,实际上就是调整网络的每个神经元的连接权和偏置。BP神经网络分为两部分,前向传输(逐层波浪式的传递输出值)和逆向反馈(反向逐层调整权重和偏置)。BP网络能学习和存储大量的输入-输出模式隐射关系,而无需事前揭示描述这种隐射关系的数学方程。它的学习规则是当实际输出与期望输出不符时,进入误差的反向传播阶段。误差通过输出层,按误差梯度下降的方式修正各层权值,向隐层、输入层逐层反传。周而复始的信息正向传播和误差反向传播过程,使得权值和偏置不断调整,此过程一直进行到网络输出的误差减少到可以接受的程度,或者预先设定的学习次数为止。 下面是数学推导,误差函数为均方误差,对每个连接全的偏导利用链式法则总能由后面的部分推导出来,有兴趣可以参考https://www.zhihu.com/question/27239198

四、神经网络的最优化

      神经网络是个非常复杂的机器学习模型,dvc=O(VD),V=神经元的数量,D=权重weights的数量。复杂的神经网络虽然功能很强大,但是也会造成过拟合的危险。隐藏层很多的时候,神经网络的解是非凸问题,GD/SGD得到的是局部最优解,很难得到全局解。在工程实践中一般建议会选择比较小的随机的Wij,一般能获得不错的结果。为了防止过拟合,神经网络可以加上之前学过的L1和L2正则化项,为了避免L1不能微分,L2对使得大权重收缩较大,使得小权重收缩较小的缺点,神经网络引入了对大小权重收缩相当的weight-elimination正则化项。除此之外,限制迭代次数,及时停止训练,也能防止过拟合。

参考:http://blog.jobbole.com/90184/

课程地址:https://class.coursera.org/ntumltwo-002

机器学习技法-神经网络(NNet)的更多相关文章

  1. Coursera台大机器学习技法课程笔记01-linear hard SVM

    极其淡腾的一学期终于过去了,暑假打算学下台大的这门机器学习技法. 第一课是对SVM的介绍,虽然之前也学过,但听了一次感觉还是很有收获的.这位博主总结了个大概,具体细节还是 要听课:http://www ...

  2. 机器学习技法课之Aggregation模型

    Courses上台湾大学林轩田老师的机器学习技法课之Aggregation 模型学习笔记. 混合(blending) 本笔记是Course上台湾大学林轩田老师的<机器学习技法课>的学习笔记 ...

  3. 机器学习技法之Aggregation方法总结:Blending、Learning(Bagging、AdaBoost、Decision Tree)及其aggregation of aggregation

    本文主要基于台大林轩田老师的机器学习技法课程中关于使用融合(aggregation)方法获得更好性能的g的一个总结.包含从静态的融合方法blending(已经有了一堆的g,通过uniform:voti ...

  4. 《机器学习技法》---线性SVM

    (本文内容和图片来自林轩田老师<机器学习技法>) 1. 线性SVM的推导 1.1 形象理解为什么要使用间隔最大化 容忍更多的测量误差,更加的robust.间隔越大,噪声容忍度越大: 1.2 ...

  5. 《机器学习技法》---核型SVM

    (本文内容和图片来自林轩田老师<机器学习技法>) 1. 核技巧引入 如果要用SVM来做非线性的分类,我们采用的方法是将原来的特征空间映射到另一个更高维的空间,在这个更高维的空间做线性的SV ...

  6. 系统学习机器学习之神经网络(三)--GA神经网络与小波神经网络WNN

    系统学习机器学习之神经网络(三)--GA神经网络与小波神经网络WNN 2017年01月09日 09:45:26 Eason.wxd 阅读数 14135更多 分类专栏: 机器学习   1 遗传算法1.1 ...

  7. 机器学习技法笔记(2)-Linear SVM

    从这一节开始学习机器学习技法课程中的SVM, 这一节主要介绍标准形式的SVM: Linear SVM 引入SVM 首先回顾Percentron Learning Algrithm(感知器算法PLA)是 ...

  8. coursera机器学习笔记-神经网络,学习篇

    #对coursera上Andrew Ng老师开的机器学习课程的笔记和心得: #注:此笔记是我自己认为本节课里比较重要.难理解或容易忘记的内容并做了些补充,并非是课堂详细笔记和要点: #标记为<补 ...

  9. coursera机器学习笔记-神经网络,初识篇

    #对coursera上Andrew Ng老师开的机器学习课程的笔记和心得: #注:此笔记是我自己认为本节课里比较重要.难理解或容易忘记的内容并做了些补充,并非是课堂详细笔记和要点: #标记为<补 ...

随机推荐

  1. 对于transform的新认识

    transform-origin是作用于该元素自己的,transform-origin(0px,0px),是以该元素自己本身的左上角(0px,0px)为圆心进行动作的.

  2. 转 Warning:MongoDB Replica Sets配置注意事项

    我们知道,MongoDB不提供单机的数据安全性,取而代之的是提供了Replica Sets的高可用方案.官方文档中提到的案例是三个节点组成的Replica Sets,这样在其中任何一个节点宕机后都会自 ...

  3. 回车键Enter

    兼容IE与firefox火狐的回车事件(js与jquery) 原生Javascript写法: <script> document.onkeydown=function(event) { e ...

  4. Genymotion常见问题整合与解决方案

    常见问题1:Genymotion在开启模拟器时卡在了starting virtual device(注意只有tarting virtual device窗口,没有模拟器的黑屏窗口)    原因:Vir ...

  5. bzoj 2456: mode

    #include<cstdio> #include<algorithm> using namespace std; int n,t,sum; int main() { scan ...

  6. HDU 1394 树状数组求逆序对

    Minimum Inversion Number Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java ...

  7. C# SQLiteDataReader获得数据库指定字段的值

    获得数据库指定字段的值,赋给本地变量 (1)如下,获得userinfo数据表里的字段"userid"."orgid", string userid=" ...

  8. HDU 5353

    题目大意: 相邻的朋友可以给出自己手上最多一颗糖,n个朋友形成一个环,问给的方式能否最后使所有朋友都糖的数量相同 这里我用的是网络流来做的,这里n=100000,用sap的模板可以跑过 #includ ...

  9. 交互式的Flash图表和仪表控件AnyChart

    AnyChart使你可以创建出绚丽的交互式的Flash图表和仪表控件.是一款灵活的基于Adobe Flash和跨浏览器和跨平台的图表解决方案,被很多知名大公司所使用,可以用于仪表盘的创建.报表.数据分 ...

  10. hdu1005 矩阵

    //Accepted hdu1005 0MS 248K #include <cstdio> #include <cstring> #include <iostream&g ...