这几天围绕论文A Neural Probability Language Model 看了一些周边资料,如神经网络、梯度下降算法,然后顺便又延伸温习了一下线性代数、概率论以及求导。总的来说,学到不少知识。下面是一些笔记概要。

一、 神经网络

神经网络我之前听过无数次,但是没有正儿八经研究过。形象一点来说,神经网络就是人们模仿生物神经元去搭建的一个系统。人们创建它也是为了能解决一些其他方法难以解决的问题。

对于单一的神经元而言,当生物刺激强度达到一定程度,其就会被激发,然后做出一系列的反应。模仿这个过程,就有了下面这张图:

其中X可以看作是一系列的刺激因素,而W可以看作各个刺激因素所对应的权值。计算各个刺激因素的加权和就可以作为我们总的刺激强度了。注意一下,上图中的X0和Wk0代表了随机噪声。得到中的刺激强度之后我们就可以根据这个强度做出一定的反应,这个过程交由图中的Activation function函数来处理,处理后就获得了我们最终的结果。

一般而言,Activation function函数可以有三种(下图中的a和b可以看做一种):

至此,神经网络的最基本结构——单层神经网络,已经介绍的差不多了。对于神经网络而言,我们可以利用这样的简单的单层神经网络去组合搭建一个复杂的神经网络,以实现不同的功能。它可以是这样的(接受一下参数表示的不同):

将这个图中的变量以向量的形式表示可以得到下图:

除了这种相对简单的多层神经网络,网络还可以是这样的:

这一部分的资料可以参见:

An introduction to neural networks:IBM做的一个科普资料

Introduction to Neural Networks:这个页面相对更加的规范

以及hagan教授的书籍:Neural_Network_Design

二、 梯度下降法

这个方法呢,说起来很简单。一个很形象的比喻就是说,你站在山坡上想下山,那么如何才能尽快下山(默认速度是恒定的,你也不会摔死)?

你应该会环顾四周,找到当前最陡峭的方向下山吧?这个方向就可以用梯度来计算,这也就是梯度下降法的来源。是不是觉得很简单,以为自己掌握了?哈哈,还是太年轻了。

这一部分就不赘述了,给出我学习时候用到的两个资料:

NG教授的机器学习课程中的第二课(话说,听完了,我就会了,之前可是看了一大堆资料还是似懂非懂);

机器学习中的数学这个博客也很不错,看完课程再来看看这个还是有点好处的。

对了,梯度下降法还有一个变种:随机梯度下降法。这个才是很多场合下真正使用的方法。

三、 梯度下降法和神经网络的结合

好了,上面分别介绍完了梯度下降法以及神经网络,下面就是它们的结合应用了。

我们需要利用样本数据去训练我们的神经网络模型(其实很大程度上就是修改神经网络里面的参数,如上面看到的权值等等),那么怎么修改呢?我们当时是应该对照我们的目标去做修改,这往往意味着要去最值化一些量,提到最值,是不是跟梯度下降法搭上勾勾了啊。我们可以利用梯度下降法做多轮迭代一步步逼近我们最终的目标。这也就是它们结合的地方。哦,听说所谓的深度学习也就基本上是这个思路了。瞬间感觉高大上有没有??

注意一下,这部分需要用了很多线性代数以及导数的很多知识,自行脑补。我是参考了NG教授机器学习这门课的讲义以及 Neural_Network_Design 这本书中的相关内容。

一个简单例子:房子价格

自行学习NG教授机器学习这门课的第二课,讲的很好!

下面的是一个复杂一点的例子。

我们把多层神经网络分为三层,输入层、输出层以及中间的隐藏层,对于中间隐藏层我们没有办法直接去计算梯度,进而修改参数。于是乎就只能利用求导的链式规则,从输出层开始往回计算梯度,从而得以更新参数。这也就是传说中的BP神经网络了,我的学习资料是:hagan教授的书籍:Neural_Network_Design。其中有一章节专门将BP神经网络,讲的很好。推导过程稍微有点长,我看完后不知所以,自己又找时间不看书推到了一遍,挺有意思的,哈哈。

看完后可以再参考这篇文章:Backpropagation。加深自己的理解。

四、 A Neural Probability Language Model

有了上面的基础知识,再看这篇文章就容易多了。这篇文章的地位很高,文章主要亮点在于:首先,利用词向量去表示一个词从而可以获知不同词语之间的相似度;其次,搭建神经网络去做计算(BP神经网络加上梯度下降法);其三,并行化去做计算,从而可以处理大规模的数据;最后也是最亮的地方在于该方法的实验结果非常理想!

这篇博客也有提到:Deep Learning in NLP (一)词向量和语言模型

自己感觉对于这篇文章有些细节问题还是没有理解,比如网络的输入是怎么来的?

机器学习(一):梯度下降、神经网络、BP神经网络的更多相关文章

  1. 秒懂神经网络---BP神经网络具体应用不能说的秘密.

    秒懂神经网络---BP神经网络具体应用不能说的秘密 一.总结 一句话总结: 还是要上课和自己找书找博客学习相结合,这样学习效果才好,不能单视频,也不能单书 BP神经网络就是反向传播神经网络 1.BP神 ...

  2. 【机器学习】梯度下降 II

    Gradient Descent 梯度下降 II 关于 Gradient Descent 的直观解释,参考上一篇博客[机器学习]梯度下降 I 本模块介绍几种梯度下降模型.定义符号标记如下: \(\th ...

  3. 吴恩达机器学习笔记(四) —— BP神经网络

    主要内容: 一.模型简介 二.一些变量所代表的含义 三.代价函数 四.Forward Propagation 五.Back Propagation 六.算法流程 待解决问题: 视频中通过指出:当特征变 ...

  4. 机器学习-随机梯度下降(Stochastic gradient descent)

    sklearn实战-乳腺癌细胞数据挖掘(博主亲自录制视频) https://study.163.com/course/introduction.htm?courseId=1005269003& ...

  5. R_Studio(神经网络)BP神经网络算法预测销量的高低

    BP神经网络 百度百科:传送门 BP(back propagation)神经网络:一种按照误差逆向传播算法训练的多层前馈神经网络,是目前应用最广泛的神经网络 #设置文件工作区间 setwd('D:\\ ...

  6. 斯坦福大学公开课机器学习:梯度下降运算的学习率a(gradient descent in practice 2:learning rate alpha)

    本章节主要讲怎么确定梯度下降的工作是正确的,第二是怎么选择学习率α,如下图所示: 上图显示的是梯度下降算法迭代过程中的代价函数j(θ)的值,横轴是迭代步数,纵轴是j(θ)的值 如果梯度算法正常工作,那 ...

  7. 斯坦福大学公开课机器学习:梯度下降运算的特征缩放(gradient descent in practice 1:feature scaling)

    以房屋价格为例,假设有两个特征向量:X1:房子大小(1-2000 feets), X2:卧室数量(1-5) 关于这两个特征向量的代价函数如下图所示: 从上图可以看出,代价函数是一个又瘦又高的椭圆形轮廓 ...

  8. 机器学习-随机梯度下降(Stochastic gradient descent)和 批量梯度下降(Batch gradient descent )

    梯度下降(GD)是最小化风险函数.损失函数的一种常用方法,随机梯度下降和批量梯度下降是两种迭代求解思路,下面从公式和实现的角度对两者进行分析,如有哪个方面写的不对,希望网友纠正. 下面的h(x)是要拟 ...

  9. python机器学习——随机梯度下降

    上一篇我们实现了使用梯度下降法的自适应线性神经元,这个方法会使用所有的训练样本来对权重向量进行更新,也可以称之为批量梯度下降(batch gradient descent).假设现在我们数据集中拥有大 ...

  10. [DL学习笔记]从人工神经网络到卷积神经网络_1_神经网络和BP算法

    前言:这只是我的一个学习笔记,里边肯定有不少错误,还希望有大神能帮帮找找,由于是从小白的视角来看问题的,所以对于初学者或多或少会有点帮助吧. 1:人工全连接神经网络和BP算法 <1>:人工 ...

随机推荐

  1. java-脚本-编译-注解

    有注解没注解生成字节码一样 ,只对处理它的工具有用通过注解接口定义@interface 元注解(4个)@Target ANNOTATION_TYPE/PACKAGE/TYPE/METHOD/CONST ...

  2. Effective C# 学习笔记(原则二:为你的常量选择readonly而不是const)

    原则二.为你的常量选择readonly而不是const      Prefer readonly to const 对于常量,C#里面有两个不同的版本:运行时常量(readonly)和编译时常量(co ...

  3. 算法:C++排列组合

    题目:给定1-n数字,排列组合. 解法:递归.第一个数字有n种选择,第二个数字有n-1种选择,依次递归排列输出.用数组表示n个数字,用过的数字置0. 实现语言:C++ #include <ios ...

  4. VBA在WORD中给表格外的字体设置为标题

    使用VB可以将表外的字体设置标题字体实际操作如下: VB代码如下: Sub oliver_1() Selection.EndKey Unit:=wdStory '光标移到文末 To ActiveDoc ...

  5. Oracle表结构转换SqlSERVER表结构 脚本

    在审计工作中,有时需要将Oracle的表结构修改后再SqlSERVER中创建表结构,然后将数据导入到SqlSERVER中,在修改表结构的过程中方法狠多.手工修改,最蠢的方法,或者用工具UE批量修改,还 ...

  6. Android之使用HTTP协议的Get/Post方式向服务器提交数据

    1.Get方式 方法:通过拼接url在url后添加相应的数据,如:http://172.22.35.112:8080/videonews/GetInfoServlet?title=霍比特人&t ...

  7. python: 命令选项及归类

    usage: python [option] ... [-c cmd | -m mod | file | -] [arg] ... Options and arguments (and corresp ...

  8. iOS学习之Object-C语言内存管理高级

    一.属性的内存管理

  9. Mac OSX 快捷键&命令行总览

    大家初用Mac OSX可能不习惯,特别收集总结了Mac OSX 上的快捷键,方便大家参考 ,请叫我雷锋. 一.Mac OSX 快捷键 ctrl+shift                       ...

  10. [转] Matlab中给信号加高斯白噪声的方法

    MATLAB中产生高斯白噪声非常方便,可以直接应用两个函数,一个是WGN,另一个是AWGN.WGN用于产生高斯白噪声,AWGN则用于在某一信号中加入高斯白噪声. 1. WGN:产生高斯白噪声 y = ...