神经网络

Neural Networks

1 为什么要用神经网络?

既然前面降了逻辑回归,为什么还需要神经网络呢?前面我们制定在非线性分类问题中,也可以使用逻辑回归进行分类,不过我们的特征变量就变成了原始特征的高阶多项式。假设有100个特征变量,要使用逻辑回归进行分类的话,特征就呈指数增长,不仅计算量十分大,而且很容易过拟合。

2 模型表示

神经元模型

单个神经元可以是一个逻辑回归模型。

基本神经网络

由多个神经元组成,一般有输入层、隐层和输出层。

写成向量形式:

3 举例Examples and intuitions

首先我们看看sigmoid函数的大致图像,对于线性的分类,我们使用一个神经元就可以完成了。

而对于非线性的分类,例如XNOR运算,我们将多个神经元组成一个神经网络可以表达更复杂的模型。

多分类

4 代价函数 cost function

先回顾一下逻辑回归的代价函数:

现在给出神经网络的代价函数:

正则项其实就是把除了偏置外所有的参数相加。

5 后向传播算法Backpropagation algorithm

我们要使用梯度下降来计算参数时,需要计算出

先使用前向传播算法:

然后计算出每层的残差,进行后向传播:

由于输入层直接使用的是输入数据,不存在误差,所以只用计算到第二层。

具体的算法:

Backpropagation algorithm

Training set

Set

For

Set

Perform forward propagation to compute

Using

Compute

梯度检验

在进行后向传播算法训练参数前,为了确保我们的代码计算偏导是正确的,我们可以使用梯度检验。其实就是用数值计算偏导的方法。不过在训练时,一定要记得把梯度检验关掉,因为数值计算偏导十分耗时。

6 随机初始化 Random initialization

在线性回归和逻辑回归中,我们对参数初始化都是赋值为0,那么我们在神经网络中是否也可以全部赋值为0 呢?这样是不行的,如果全部赋值为0,那么每层的每个单元会学习到同样的参数,每个单元也就无法体现出自己的效果了。所以我们要打破这种情况,采取随机初始化。

7 总结 Putting it together

对于一个神经网络,有输入,输出和隐层,那么我们如何去选择每层有多少单元呢?输入层和输出层的结构我们根据要解决的问题要选定,那么对于隐层我们一般会选取含有同样个数的单元。

训练一个神经网络的主要步骤:

  1. 随机初始化权重。
  2. 使用向前传播算法,对于每一个输入计算得到
  3. 计算代价函数
  4. 使用后向传播算法计算偏导
  5. 用梯度检验验证的正确性(训练的时候记得要把梯度检验关掉)
  6. 使用梯度下降法最小化,求出参数。

是一个非凸的,可能收敛到局部最小。

ML 神经网络 NeuralNetworks的更多相关文章

  1. 初识神经网络NeuralNetworks

    1.神经网络的起源 在传统的编程方法中,我们通常会告诉计算机该做什么,并且将一个大问题分解为许多小的.精确的.计算机可以轻松执行的任务.相反,在神经网络中,我们不告诉计算机如何解决问题,而是让计算机从 ...

  2. Multimodal —— 看图说话(Image Caption)任务的论文笔记(二)引入attention机制

    在上一篇博客中介绍的论文"Show and tell"所提出的NIC模型采用的是最"简单"的encoder-decoder框架,模型上没有什么新花样,使用CNN ...

  3. (原创)Stanford Machine Learning (by Andrew NG) --- (week 4) Neural Networks Representation

    Andrew NG的Machine learning课程地址为:https://www.coursera.org/course/ml 神经网络一直被认为是比较难懂的问题,NG将神经网络部分的课程分为了 ...

  4. [置顶] NB多项式事件模型、神经网络、SVM之函数/几何间隔——斯坦福ML公开课笔记6

    转载请注明:http://blog.csdn.net/xinzhangyanxiang/article/details/9722701 本篇笔记针对斯坦福ML公开课的第6个视频,主要内容包括朴素贝叶斯 ...

  5. 一位ML工程师构建深度神经网络的实用技巧

    一位ML工程师构建深度神经网络的实用技巧 https://mp.weixin.qq.com/s/2gKYtona0Z6szsjaj8c9Vg 作者| Matt H/Daniel R 译者| 婉清 编辑 ...

  6. ML(5)——神经网络3(随机初始化与梯度检验)

    随机初始化 在线性回归和逻辑回归中,使用梯度下降法之前,将θ设置为0向量,有时会习惯性的将神经网络中的权重全部初始化为0,然而这在神经网络中并不适用. 以简单的三层神经网络为例,将全部权重都设置为0, ...

  7. ML(5)——神经网络2(BP反向传播)

    上一章的神经网络实际上是前馈神经网络(feedforward neural network),也叫多层感知机(multilayer perceptron,MLP).具体来说,每层神经元与下一层神经元全 ...

  8. ML(5)——神经网络1(神经元模型与激活函数)

    上一章介绍了使用逻辑回归处理分类问题.尽管逻辑回归是个非常好用的模型,但是在处理非线性问题时仍然显得力不从心,下图就是一个例子: 线性模型已经无法很好地拟合上面的样本,所以选择了更复杂的模型,得到了复 ...

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

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

随机推荐

  1. Linq与扩展方法

    使用数据集 /// <summary> /// 库房信息类 /// </summary> public class Kfxx { /// <summary> /// ...

  2. Redis 单机版本安装

    亲装! 1.linux 系统镜像 redis 版本  使用redis-3.2.8.tar.gz(截止2017年4月的最新稳定版) 在安装之前先安装下redis 需要的环境 wget http://do ...

  3. iOS KVO详解

    一.KVO 是什么? KVO 是 Objective-C 对观察者设计模式的一种实现.[另外一种是:通知机制(notification),详情参考:iOS 趣谈设计模式——通知]: KVO 提供一种机 ...

  4. RedHat6/Centos6.5安装mongodb

    1 设置mongodb目录 [root@localhost /]# cd home/ [root@localhost home]# mkdir mongodb/db 2 配置yum [root@loc ...

  5. 密钥管理服务KMS

    密钥管理服务 KMS - 腾讯云 https://cloud.tencent.com/product/kms

  6. margin 依附与可见的内容,不能为margin而写margin

    margin  依附于可见的内容,不能为margin而写margin <!DOCTYPE html><html><head><style> p{marg ...

  7. Android系统移植与调试之------->增加一个双击物理按键打开和关闭闪光灯并将闪光灯状态同步到下拉菜单中

    最近有一个客户有这样的需求: 1.在[设置]--->[无障碍]中添加一个开关按钮. 如果打开开关的话,双击某个物理按键的时候,打开闪光灯,再双击该物理按键的时候,关闭闪光灯. 如果关闭开关的话, ...

  8. 我的Android进阶之旅------>解决Bug:打开eclipse报错,发现了以元素 'd:skin' 开头的无效内容。此处不应含有子元素。

    今天来打开Eclipse 报错了,错误信息如下: [2015-08-01 09:07:43 - Android SDK] Error when loading the SDK: Error: Erro ...

  9. Log Explorer 恢复误删除、更新数据

    一.介绍 详细参考:https://blog.csdn.net/jinjazz/article/details/2459692 转自:https://blog.csdn.net/hch27151099 ...

  10. 稀疏自动编码器 (Sparse Autoencoder)

    摘要: 一个新的系列,来自于斯坦福德深度学习在线课程:http://deeplearning.stanford.edu/wiki/index.php/UFLDL_Tutorial.本文梳理了该教程第一 ...