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

训练一个神经网络的主要步骤:
- 随机初始化权重。
- 使用向前传播算法,对于每一个输入
计算得到
- 计算代价函数
- 使用后向传播算法计算偏导
- 用梯度检验验证
的正确性(训练的时候记得要把梯度检验关掉) - 使用梯度下降法最小化
,求出参数。
是一个非凸的,可能收敛到局部最小。
ML 神经网络 NeuralNetworks的更多相关文章
- 初识神经网络NeuralNetworks
1.神经网络的起源 在传统的编程方法中,我们通常会告诉计算机该做什么,并且将一个大问题分解为许多小的.精确的.计算机可以轻松执行的任务.相反,在神经网络中,我们不告诉计算机如何解决问题,而是让计算机从 ...
- Multimodal —— 看图说话(Image Caption)任务的论文笔记(二)引入attention机制
在上一篇博客中介绍的论文"Show and tell"所提出的NIC模型采用的是最"简单"的encoder-decoder框架,模型上没有什么新花样,使用CNN ...
- (原创)Stanford Machine Learning (by Andrew NG) --- (week 4) Neural Networks Representation
Andrew NG的Machine learning课程地址为:https://www.coursera.org/course/ml 神经网络一直被认为是比较难懂的问题,NG将神经网络部分的课程分为了 ...
- [置顶] NB多项式事件模型、神经网络、SVM之函数/几何间隔——斯坦福ML公开课笔记6
转载请注明:http://blog.csdn.net/xinzhangyanxiang/article/details/9722701 本篇笔记针对斯坦福ML公开课的第6个视频,主要内容包括朴素贝叶斯 ...
- 一位ML工程师构建深度神经网络的实用技巧
一位ML工程师构建深度神经网络的实用技巧 https://mp.weixin.qq.com/s/2gKYtona0Z6szsjaj8c9Vg 作者| Matt H/Daniel R 译者| 婉清 编辑 ...
- ML(5)——神经网络3(随机初始化与梯度检验)
随机初始化 在线性回归和逻辑回归中,使用梯度下降法之前,将θ设置为0向量,有时会习惯性的将神经网络中的权重全部初始化为0,然而这在神经网络中并不适用. 以简单的三层神经网络为例,将全部权重都设置为0, ...
- ML(5)——神经网络2(BP反向传播)
上一章的神经网络实际上是前馈神经网络(feedforward neural network),也叫多层感知机(multilayer perceptron,MLP).具体来说,每层神经元与下一层神经元全 ...
- ML(5)——神经网络1(神经元模型与激活函数)
上一章介绍了使用逻辑回归处理分类问题.尽管逻辑回归是个非常好用的模型,但是在处理非线性问题时仍然显得力不从心,下图就是一个例子: 线性模型已经无法很好地拟合上面的样本,所以选择了更复杂的模型,得到了复 ...
- Coursera ML笔记 - 神经网络(Representation)
前言 机器学习栏目记录我在学习Machine Learning过程的一些心得笔记,涵盖线性回归.逻辑回归.Softmax回归.神经网络和SVM等等,主要学习资料来自Standford Andrew N ...
随机推荐
- openssl 升级 操作 -1
好多公司都会用绿盟扫描系统漏洞,里边就会涉及到ssl 漏洞,原因是openssl 版本低导致,会让你升级到指定版本.下面就介绍一下openssl 版本升级的操作方案. 一. 查看系统版本 [root@ ...
- String、StringBuffer与StringBuilder的区别。
无论是做Java或是Android,都避免不了遇到这个问题,其实开发过程中一般情况下是不会纠结,这个问题是面试必选经典题,今天有时间,就总结一下. String.StringBuffer.String ...
- mongodb基础操作
查询选择器>db.customers.find({age:{$lt:102}})查询age小于102的数据$lte表示小于或等于$gt表示大于$gte表示大于或等于>db.customer ...
- 【python】-- Django ORM(进阶)
Django ORM(进阶) 上一篇博文简述了Django ORM的单表操作,在本篇博文中主要简述Django ORM的连表操作. 一.一对多:models.ForeignKey() 应用场景:当一张 ...
- Vue.js刷新当前页面
Vue.js的路由跳转很强大,类似ajax的局部刷新,路由跳转时候页面是不刷新的,刷新当前页面的功能不建议用,但是有的时候确实需要刷新当前页面来实现某些需求,这个时候,我们有三 种方法可以实现. 第一 ...
- python函数回顾:dir()
描述 dir() 函数不带参数时,返回当前范围内的变量.方法和定义的类型列表: 带参数时,返回参数的属性.方法列表.如果参数包含方法__dir__(),该方法将被调用. 如果参数不包含__dir__( ...
- python多线程(三)
同步锁 两个需要注意的点: 线程抢的是GIL锁,GIL锁相当于执行权限,拿到执行权限后才能拿到互斥锁Lock,其他线程也可以抢到GIL,但如果发现Lock仍然没有被释放则阻塞,即便是拿到执行权限GIL ...
- matlab学习笔记之五种常见的图形绘制功能
分类: 离散数据图形绘制 函数图形绘制 网格图形绘制 曲面图形绘制 特殊图形绘制 本文重点介绍matlab五种图形绘制方法的后三种. 一.网格图形绘制 以绘制函数z=f(x,y)三维网格图为例,下面为 ...
- spring 登录提示 Bad credentials
spring 日志输出:Authentication failed: password does not match stored value in spring security 3.2,检查密码发 ...
- 深度学习1--ubuntu14.04+win10双系统
相当多的内容参考的百度经验https://jingyan.baidu.com/article/eb9f7b6d79a7b4869364e885.html?qq-pf-to=pcqq.group 还可以 ...










