当前位置:   article > 正文

【tensorflow】如何理解深层神经网络(DNN)?(第二课)_dnn tensorflow

dnn tensorflow

目录

深层神经网络!

1、深层神经网络与深度学习

1.1、线性模型的局限性

什么是线性?

线性模型的局限性:

没有激活函数,就只能是线性吗?

1.2、‘激活函数’去线性化

常见激活函数如下:(ReLU,sigmoid,tanh)

1.3、多层网络的优势

2、损失函数的定义

2.1、经典损失函数

(1)分类问题的经典损失函数--交叉熵

(2)回归问题的经典损失函数--均方误差

2.2、自定义损失函数

3.神经网络优化算法

反向传播算法的机理到底是怎么样的?

4.神经网络进一步优化

4.1、如何设置学习率?

4.2、解决过拟合问题

解决过拟合----正则化

4.3、滑动平均模型

什么是滑动平均模型?


深层神经网络!

1、深层神经网络与深度学习

深层神经网络(DNN)是深度学习网络的特点之一-------多层非线性

1.1、线性模型的局限性

什么是线性?

分类函数或者回归函数是直线或者平面的时候,就是线性。如下图:

线性模型的局限性:

以下图形无法通过直线划分,这就是线性的局限。

没有激活函数,就只能是线性吗?

不添加激活函数的模型,如下图,就只能是线性,因为w1和w2可以相乘,线性乘线性还是线性。

所以需要激活函数,来去除线性。

1.2、‘激活函数’去线性化

去线性化的结构为:

a本来为 w1x,此时加入了偏置项b(一般取为1),和非线性函数f(),变成a=f(w1x+b),使得神经网络模型变成非线性

这个非线性函数f()就是激活函数。

常见激活函数如下:(ReLU,sigmoid,tanh)

1.3、多层网络的优势

一个直观的解释,从模型复杂度角度。如果我们能够增强一个学习模型的复杂度,那么它的学习能力能够提升。

如何增加神经网络的复杂度呢?要么变宽,即增加隐层网络神经元的个数;要么变深,即增加隐层的层数。

哪一种更有效?显然是后者。因为后者是用分布式表示的方法探究数据背后更本质的特征,也显示模块化的思想。

这就是层数的优势。

 

2、损失函数的定义

2.1、经典损失函数

(1)分类问题的经典损失函数--交叉熵

上一课中的损失函数,直接用一个代码式子就搞出来了。

这个代码用的是交叉熵(cross entropy)来表示loss,交叉熵是分类问题中用常用的评判方法之一。

其中y_代表真确结果,y代表预测结果。(注意:y_和y都是经过soft回归得到的概率分布)

通过tf.clip_by_value()函数将一个张量中是数值限制在一个范围之内,避免一些错误运算。

  1. # 定义损失函数和反向传播算法
  2. cross_entropy = -tf.reduce_mean(y_ * tf.log(tf.clip_by_value(y, 1e-10, 1.0))) # 损失函数
  3. train_step = tf.train.AdamOptimizer(0.001).minimize(cross_entropy) # 反向传播算法,一步到位

tensorflow把交叉熵和soft回归集合在一起,简化求交叉熵loss的代码:

cross_entropy=tf.nn.softmax_cross_entropy_with_logits(y,y_)

(2)回归问题的经典损失函数--均方误差

mse=tf.reduce_mean(tf.square(y_-y))

2.2、自定义损失函数

有的时候loss是分段的,就是不同情况下,求值方式不同,此时没有固定的公式,要自己设置。

比如当loss是这个分段公式,则么求?

  1. a = 10
  2. b = 1
  3. loss = tf.reduce_sum(tf.where(tf.greater(x,y),(x-y)*a,(y-x)*b))

loss定义完后,还是可以用反向传播算法来优化,把loss当成一个整体,优化写法还是一样的:

train_step=tf.train.AdamOptimizer(0.001).minimize(loss)

3.神经网络优化算法

梯度下降---主要用于优化单个参数。

反向传播---在所有参数下进行梯度下降。

学习率-----每次参数更新的幅度

梯度-------偏导,斜率

反向传播算法的机理到底是怎么样的?

直接用tensorflow的函数吧,当个黑箱。

 

4.神经网络进一步优化

4.1、如何设置学习率?

先用大的,到一定时候,学习率变小。-------指数衰减法,这个学习率叫做衰减学习率

指数衰减法函数 tf.train.expotential_decay()

learning_rate=tf.train.expotential_decay(0.1,global_step,100,0.96,staircase=True)

4.2、解决过拟合问题

过拟合----模型过于复杂

欠拟合----模型过于简单

解决过拟合----正则化

正则化是解决过拟合问题的一种最基本的方法。

他的思想就是在损失函数J(θ)中加入刻画模型复杂度的指标λR(w),所以loss变成J(θ)+λR(w),最后优化的是这个。

根据R(w)的不同,分为L1正则化、L2正则化。

4.3、滑动平均模型

什么是滑动平均模型?

使模型在位置数据(测试集)上更健壮。

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/697803
推荐阅读
相关标签
  

闽ICP备14008679号