#对coursera上Andrew Ng老师开的机器学习课程的笔记和心得;

#注:此笔记是我自己认为本节课里比较重要、难理解或容易忘记的内容并做了些补充,并非是课堂详细笔记和要点;

#标记为<补充>的是我自己加的内容而非课堂内容,参考文献列于文末。博主能力有限,若有错误,恳请指正;

#---------------------------------------------------------------------------------#

多层神经网络模型:

<补充>:每一个单元有一定数量的实值输入,产生单一的实值输出(可以是其他很多单元的输入);

符号标记:ai(j):activation of unit in layer j ;Ɵ(j) :matrix of parameters controlling the function mapping from layer j to layer j+1

#---------------------------------------------------------------------------------#

神经网络的cost function:

前一项的目的是使所有单元的误差和最小(采用对数损失函数),后一项是regularization项,旨在控制模型复杂度,防止overfitting;

#---------------------------------------------------------------------------------#

forward propagation(前向传播)

<补充>:其实也就是通过神经网络,从输入参数到输出结果的计算过程(只计算一次);

参数的计算如下:

,其中g(x)是sigmoid函数;

#---------------------------------------------------------------------------------#

Back propagation(反向传播):与前向传播非常类似,从结果层倒推回输入层,计算每层δ的过程,δ为误差;

,其中:l指第几层,

注:第一层是输入层,没有δ1项,最后一层(输出层)的δ不是按此式计算,见下例;

δ= a- y,δ= (Ɵ3)δ. *(a. * (1 - a3)),δ= (Ɵ2)δ. *(a. * (1 - a2));

#---------------------------------------------------------------------------------#

Back propagation algorithm(反向传播算法)

<补充>:一个最优化问题,目的是在使cost function值最小(这里是通过偏导最小来实现)的情况下,训练出神经网络各个参数的权值;

算法如下:

1,给出训练集作为输入,,将delta值设为0,

2,进行下列过程直至性能满足要求为止:

    对于每一训练(采样)输入,
      (a) 通过前向传播计算所得输出。
      (b) 通过反向传播计算每层的δ值;
      (c) 更新delta值:

3,得到神经网络参数的权值:

  ,其中:;

#---------------------------------------------------------------------------------#

几则关于神经网络的问题和解决办法

1,Gradient checking:反向传播算法有很多细节,非常容易出错,Gradient checking有助于cost function J(Ɵ)的准确性;

原理:比较由反向传播计算得到的DVec和梯度计算得到的gradApprox两者是否相近似来判断;

<补充>:其实是用了微积分当中导数的概念,

注:在训练数据时需要将Gradient checking代码注释掉,因为gradApprox的计算是很耗时的;

2,Random initialization:反向传播算法是局部收敛的,需多次选起始点训练来减少最终局部收敛的可能性;

#---------------------------------------------------------------------------------#

参考文献:

《machine learning》, by Tom Mitchell;

couresra课程: standford machine learning, by Andrew Ng;

coursera机器学习笔记-神经网络,学习篇的更多相关文章

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

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

  2. Python机器学习笔记 集成学习总结

    集成学习(Ensemble  learning)是使用一系列学习器进行学习,并使用某种规则把各个学习结果进行整合,从而获得比单个学习器显著优越的泛化性能.它不是一种单独的机器学习算法啊,而更像是一种优 ...

  3. Coursera ML笔记 - 神经网络(Representation)

    前言 机器学习栏目记录我在学习Machine Learning过程的一些心得笔记,涵盖线性回归.逻辑回归.Softmax回归.神经网络和SVM等等,主要学习资料来自Standford Andrew N ...

  4. coursera机器学习笔记-建议,系统设计

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

  5. coursera机器学习笔记-多元线性回归,normal equation

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

  6. coursera机器学习笔记-机器学习概论,梯度下降法

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

  7. 视觉机器学习笔记------CNN学习

    卷积神经网络是第一个被成功训练的多层神经网络结构,具有较强的容错.自学习及并行处理能力. 一.基本原理 1.CNN算法思想 卷积神经网络可以看作为前馈网络的特例,主要在网络结构上对前馈网络进行简化和改 ...

  8. Stanford机器学习笔记-6. 学习模型的评估和选择

    6. 学习模型的评估与选择 Content 6. 学习模型的评估与选择 6.1 如何调试学习算法 6.2 评估假设函数(Evaluating a hypothesis) 6.3 模型选择与训练/验证/ ...

  9. Coursera 机器学习笔记(四)

    主要为第六周内容机器学习应用建议以及系统设计. 下一步做什么 当训练好一个模型,预测未知数据,发现结果不如人意,该如何提高呢? 1.获得更多的训练实例 2.尝试减少特征的数量 3.尝试获得更多的特征 ...

随机推荐

  1. 值栈(Structs2)

    1. 关于值栈: 1). 登陆 时, ${userName} 读取 userName 值, 实际上该属性并不在 request 等域对象中, 而是从值栈中获取的. 2). ValueStack: I. ...

  2. hibnate 创建表的时候type=innodb报错

    这个原因是在MYSQL5.5及以后版本中type=InnoDB 由ENGINE=InnoDB  代替. 解决办法,自己定义一个方言: package com.hotusm.dialect; /** * ...

  3. Oracle 数据库基础学习 (三) Oracle 四个表结构

    Oracle 四个表的 emp dept  salgrade  bunus 的结构,记住有利于后期SQL语句的学习 雇员表(emp) No. 字段 类型 描述 1 empno NUMBER(4) 表示 ...

  4. malloc和new的区别

    (1)malloc在C和C++中都可以使用,用来申请一段内存:申请的内存一定要用free释放,然后把指针置为null: new只能在C++中使用,用于动态内存分配:new的对象要delete掉: (2 ...

  5. Java数组排序和查找

    Java 1.2 添加了自己的一套实用工具,可用来对数组或列表进行排列和搜索.这些工具都属于两个新类的"静态"方法.这两个类分别是用于排序和搜索数组的Arrays,以及用于排序和搜 ...

  6. GJM : Protobuf -NET 相比Json 传输速度只需要1/3 解析只需要1/10

    在序列化速度的跑分中,Protobuf一骑绝尘,序列化速度快,性能强,体积小,所以打算了解下这个利器 1:安装篇 谷歌官方没有提供.net的实现,所以在nuget上找了一个移植的 Nuget里搜索Pr ...

  7. Java基础学习总结--对象容器

    目录: ArrayList 顺序泛型容器 HashSet 集合容器 HashMap<Key,Value>容器 要用Java实现记事本的功能.首先列出记事本所需功能: 可以添加记录(字符串) ...

  8. Salvattore:CSS 驱动的 jQuery Masonry 插件

    Salvattore 是一个 jQuery 砌体的替代,使用 CSS 驱动的配置.Salvattore 根据您指定的列数组织你的 HTML 元素.容器中的每一个项目会一个接一个被放置在列内,只需要简单 ...

  9. Ionic – 强大的 HTML5 Mobile App 开发框架

    Ionic 是一个强大的 HTML5 应用程序开发框架,可以帮助您使用 Web 技术,比如 HTML.CSS 和 Javascript 构建接近原生体验的移动应用程序.Ionic 主要关注外观和体验, ...

  10. Hadoop 2.5.1编译

    1.环境安装 gcc.gcc-c++.make.cmake.svn yum install lzo-devel zlib-devel gcc gcc-c++ make cmake autoconf a ...