深度学习-介绍

入门

:​​​​​​深度学习快速入门(纯干货) - 知乎  

深度学习如何入门? - 知乎

基本概念:

深度学习(Deep Learning)入门——基本概念_樱花树上的alien的博客-CSDN博客_deep learning

开始跟着视频学习:(接着上个博客-机器学习-分类)

插一个偏导:

我们把变量y视为常数,通过对方程求导,我们发现ƒ在点(x, y, z)的。我们把它记为:

(1)

深度学习特指用深度神经网络处理机器学习问题的方法,即深度学习包含于机器学习。

深度学习是多层神经网络,具体多少层没有明确的规定

(2)深度学习3个步骤:

  1. 确定模型(Model)/函数集(Function Set),在深度学习中就是定义一个神经网络。
    不同的连接会构成多样的网络结构。
  2. 确定如何评价函数的好坏
    如果是多分类,那和Classification一章中一样,计算每个样本预测结果与Ground Truth的交叉熵,然后求和,即为Loss。
  3. 确定如何找到最好的函数
    还是Gradient Descent。
    神经网络模型对应的函数比较复杂,而反向传播算法(Backpropagation)是一个很有效的计算神经网络梯度的方法。

(3)确定模型(Model)/函数集(Function Set)

以这个全连接前馈网络找这个连接方法为例子:

x1'= w1x1+w2x2+b(w1=1,w2=-1,b=1)

x2'= w1x1+w2x2+b(w1=-2,w2=1,b=0)

weight和bias ,初始的w和b可以随机,然后训练会自动调节w和b的值。weight和bias是迭代计算出来的。

最开始w和b都不确定:

 输入 向量  ;输出  向量

(4)

neuron  神经元(等于1 个的logistic regression)

神经网络基本组成:

输入层(input layer),隐藏层(hidden layer),输出层(output layer):

        每层由神经元或单元组成

        输入层由训练集的样本特征向量传入

       隐藏层: 特征提取器(Feature Extractor),作用是代替特征工程(Feature Engineering)。

        经过连接节点的权重(weight)传入下一层,上一层的输出是下一层的输入

        上一层中的加权求和,然后根据非线性方程转化为下一层的输入

        输出层:可以看成分类器

 对于多层神经网络,理论上如果有足够多的隐藏层和足够多的训练样本,可以拟合出任意方程

 (5)

如何用矩阵描述 运算:

 对输入的x1=1,x2=-1:   x1’=1*1+-1*-2+1=4

 可以写成一连串的矩阵运算 (妙啊),让GPU去加速

 特征提取 与特征工程 :机器学习之特征提取_Madazy的博客-CSDN博客_机器学习特征提取

   识别狗和猫:

(特征工程)

如果是传统机器学习的方法,我们会首先定义一些特征,如有没有胡须,耳朵、鼻子、嘴巴的模样等等。总之,我们首先要确定相应的“面部特征”作为我们的机器学习的特征,以此来对我们的对象进行分类识别。

(特征提取)

而现在,深度学习的方法则更进一步。深度学习自动地找出这个分类问题所需要的重要特征!而传统机器学习则需要我们人工地给出特征!

(6)例子

 ,

 输入向量 256维 (白色为0,橘色为1) ;输出10维度。

 这个神经网络定义了一个 function集合,里面可能包含了一个好的functon

(7)有些问题 用机器学习好,有些问题用 深度学习好。深度学习是机器学习的一个分支,不是用来代替它的。目前设想

这里推荐一下:深度学习、机器学习与NLP的前世今生 - 知乎

而Deep learning颠覆了这个过程,不需要做特征工程。需要各种各样的特征,比如需要一些长时间依赖的特征,那可以用RNN、LSTM这些,让它有个序列的依赖;可以用局部的特征,用各种各样的N元语法模型,现在可以用CNN来提取局部的文本特征。

(8)确定如何评价函数的好坏:

 损失函数Loss=  交叉镝

y和y"分别是: 真是值 和 预测值

确定如何找到最好的函数

 还是利用梯度下降:

 ==================================================================================================================================================

p15

为什么是deep神经网络(瘦长,有多个隐藏层),而不是fat神经网络(扁平,只有一个隐藏层,但有许许多多神经元)?

”第一,本节课结论一:深度学习可以使用更少的数据产生同样的效果

=========================================================================

=========================================================================

backpropagation反向传播

精辟,BP只是让梯度算法更高效!反向传播就是  梯度下降的一个方法,让梯度下降更优效率。

network 网络

neuron  神经元

神经网络参数{w1,b1,w2,b2,.....} wi是一个神经元的参数向量

可能这个有上百万维度

1. 为什么 反向传播算法:

神经网络里面 参数太多,神经网络求损失函数对中间层参数的导数是一件十分困难的事情,但BP算法能很好的解决这个问题。

2.链式法则

链式法则是微积分中的求导法则,用于求一个复合函数导数,是在微积分的求导运算中一种常用的方法。复合函数的导数将是构成复合这有限个函数在相应点的导数的乘积,就像锁链一样一环套一环,故称链式法则。

3.backpropagation反向传播算法法最重要的两个步骤分别是Forward pass和Backward pass

 Loss损失函数=交叉镝 = 

首先我们知道BP算法的目的是求损失函数Loss对权重/偏置参数的导数,即求:

 C(θ) 是代价函数,它是 y 和 y^ 的距离度量,将所有的训练集的代价函数求和即为损失函数。

我们以对一个神经元求 ∂C/∂w 为例,根据链式求导法则: (z是中间变量)

激活函数包含在∂C/∂z中,这个S弯过来的点就是激活函数sigmoid(z)

在前馈时同时用变量存储了每层的梯度

所以我们目标即转化成了求 ∂z/∂w , ∂C/∂z 。

1.Forward pass就是用来计算 ∂z/∂w 的,而Backward pass是用来求 ∂C/∂z 的。

对于z = x1w1+x2w2+b

Forward pass: ∂z/∂w 

2.Backward pass:∂C/∂z   

这一项要从后往前算才行,所以叫反向传播

 a=sigmoid(z)

现在问题是∂C/∂a:

其中:a又会影响到: Z‘ 和Z’‘

因为这个例子a只会影响到2个Z,所以∂C/∂a  拆分为2项

所以从 计算∂C/∂z,转变为 计算∂C/∂z’ 和∂C/∂z‘’

 现在我们知道了输出层:y   ,y是求C交叉镝的中间变量

从而:

 这就是反向传播!!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值