【TensorFlow 学习】深度学习与深层神经网络的概念

深度学习

概念:

一类通过多层非线性变换对高复杂性数据建模算法的集合。

特性:

1、多层
2、非线性

线性模型的局限性

线性模型中,模型的输出为输入的加权和。
例如:
y = ∑ i w i x i + b y=\sum_{i}w_ix_i+b y=iwixi+b
其中 w i , b ∈ R w_i,b \in R wi,bR为模型的参数。

特点

任意线性模型的组合还是线性模型。

局限性

只通过线性变换,任意层的全连接神经网络和单层神经网络模型的表达能力没有任何区别,并且都是线性模型。

线性模型能解决的问题是有限的。
在这里插入图片描述
在线性可分问题中,线性模型就能很好的区分不同颜色的点。而上图无法通过直线(或高维空间的平面)划分。
在现实世界中,绝大部分的问题都是无法线性分割的。

激活函数实现去线性化

如果将每一个神经元(即神经网络的节点)的输出通过一个非线性函数,则整个神经网络的模型就不再是线性的了。
加入偏置项和激活函数的神经元结构示意图
下面将【TensorFlow 学习】如何实现一个简单的神经网络中的神经网络结构加上激活函数和偏置项后实现的前向传播算法为:
A 1 = [ a 11 , a 12 , a 13 ] = f ( x W ( 1 ) + b ) = f ( [ x 1 , x 2 ] [ W 1 , 1 ( 1 ) W 1 , 2 ( 1 ) W 1 , 3 ( 1 ) W 2 , 1 ( 1 ) W 2 , 2 ( 1 ) W 2 , 3 ( 1 ) ] + [ b 1 , b 2 , b 3 ] ) = f ( [ W 1 , 1 ( 1 ) x 1 + W 2 , 1 ( 1 ) x 2 + b 1 , W 1 , 2 ( 1 ) x 1 + W 2 , 2 ( 1 ) x 2 + b 2 , W 1 , 3 ( 1 ) x 1 + W 2 , 3 ( 1 ) x 2 + b 3 ] ) = [ f ( [ W 1 , 1 ( 1 ) x 1 + W 2 , 1 ( 1 ) x 2 + b 1 ) , f ( W 1 , 2 ( 1 ) x 1 + W 2 , 2 ( 1 ) x 2 + b 2 ) , f ( W 1 , 3 ( 1 ) x 1 + W 2 , 3 ( 1 ) x 2 + b 3 ) ] A_1=[a_{11},a_{12},a_{13}]=f(xW^{(1)}+b)=f([x_1,x_2] \left[ \begin{matrix} W^{(1)}_{1,1} & W^{(1)}_{1,2} & W^{(1)}_{1,3} \\ W^{(1)}_{2,1} & W^{(1)}_{2,2} & W^{(1)}_{2,3} \end{matrix} \right]+[b_1,b_2,b_3]) \\ =f([W^{(1)}_{1,1}x_1+W^{(1)}_{2,1}x_2+b1,W^{(1)}_{1,2}x_1+W^{(1)}_{2,2}x_2+b2,W^{(1)}_{1,3}x_1+W^{(1)}_{2,3}x_2+b3])\\ =[f([W^{(1)}_{1,1}x_1+W^{(1)}_{2,1}x_2+b1),f(W^{(1)}_{1,2}x_1+W^{(1)}_{2,2}x_2+b2),f(W^{(1)}_{1,3}x_1+W^{(1)}_{2,3}x_2+b3)] A1=[a11,a12,a13]=f(xW(1)+b)=f([x1,x2][W1,1(1)W2,1(1)W1,2(1)W2,2(1)W1,3(1)W2,3(1)]+[b1,b2,b3])=f([W1,1(1)x1+W2,1(1)x2+b1,W1,2(1)x1+W2,2(1)x2+b2,W1,3(1)x1+W2,3(1)x2+b3])=[f([W1,1(1)x1+W2,1(1)x2+b1),f(W1,2(1)x1+W2,2(1)x2+b2),f(W1,3(1)x1+W2,3(1)x2+b3)]
上面的定义主要有两个改变:
1、新的公式中增加了偏置项(bias),偏置项是神经网络中非常常用的一种结构。
2、每个节点的取值不再是单纯的加权和。每个节点的输出在加权和的基础上还做了一个非线性变化。

常用的非线性激活函数的函数

下图显示了几种常用的非线性激活函数的函数图像:
在这里插入图片描述
通过这些激活函数,每一个节点不再是线性变化,因此整个神经网络模型也不再是线性的了。

加入偏置项及 ReLU 激活函数后,【TensorFlow 学习】如何实现一个简单的神经网络中神经网络的结构如下:
在这里插入图片描述

偏置项可以被表达为一个输出永远为 1 的节点。

新的神经网络前向传播算法的计算方法:
a 11 = f ( W 1 , 1 ( 1 ) x 1 + W 2 , 1 ( 1 ) x 2 + b 1 ( 1 ) ) = f ( 0.7 × 0.2 ) a 12 = f ( W 1 , 2 ( 1 ) x 1 + W 2 , 2 ( 1 ) x 2 + b 1 ( 2 ) a 13 = f ( W 1 , 3 ( 1 ) x 1 + W 2 , 3 ( 1 ) x 2 + b 1 ( 3 ) ) \begin{aligned} a_{11} &=f(W_{1,1}^{(1)}x_1+W_{2,1}^{(1)}x_2+b_1^{(1)})=f(0.7 \times 0.2)\\ a_{12} &=f(W_{1,2}^{(1)}x_1+W_{2,2}^{(1)}x_2+b_1^{(2)}\\ a_{13}&=f(W_{1,3}^{(1)}x_1+W_{2,3}^{(1)}x_2+b_1^{(3)}) \end{aligned} a11a12a13=f(W1,1(1)x1+W2,1(1)x2+b1(1))=f(0.7×0.2)=f(W1,2(1)x1+W2,2(1)x2+b1(2)=f(W1,3(1)x1+W2,3(1)x2+b1(3))

输出层推导公式:
Y = f ( W ( 1 , 1 ) ( 2 ) a 11 + W ( 1 , 2 ) ( 2 ) a 12 + W ( 1 , 3 ) ( 2 ) a 13 + b 1 ( 2 ) ) = f ( 0.09 × 0.6 + 0.28 × 0.1 + 0.36 × ( − 0.2 ) + 0.1 ) = f ( 0.054 + 0.028 + ( − 0.072 ) + 0.1 ) = f ( 0.11 ) = 0.11 \begin{aligned} Y &= f(W_{(1,1)}^{(2)}a_{11}+W_{(1,2)}^{(2)}a_{12}+W_{(1,3)}^{(2)}a_{13}+b_1^{(2)})\\ &= f(0.09\times0.6+0.28\times0.1+0.36\times(-0.2)+0.1)\\ &= f(0.054+0.028+(-0.072)+0.1)\\ &=f(0.11)=0.11 \end{aligned} Y=f(W(1,1)(2)a11+W(1,2)(2)a12+W(1,3)(2)a13+b1(2))=f(0.09×0.6+0.28×0.1+0.36×(0.2)+0.1)=f(0.054+0.028+(0.072)+0.1)=f(0.11)=0.11

如何通过 TensorFlow 实现加入偏置项和激活函数的神经网络的前向传播算法?

a = tf.nn.relu(tf.matmul(x, w1) + biases1)
y = tf.nn.relu(tf.matmul(a, w2) + biases2)

多层网络的多层变换

目的: 解决异或运算

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值