误差计算
ω为参数
手动微分
数值微分
符号微分
自动微分
取极小量,偏置,计算近似切线
容易实现,准确率低
扩展性不够
已知一系列基本函数的微分
再定义各种运算的求导法则
链式求导法则
把F(x1,x2,...)分解成一堆基本运算
从前往后,一级一级求导数,慢慢往后传
后一级的导数根据前一级的对各个初始自变量的偏导
先求对x1的偏导
令Δx1=1,Δx2=0
然后一级一级往后传
$$
\vec Y = \vec F(\vec X)\ Δ\vec Y = grad (\vec F) Δ\vec X·
$$
缺点:如果输入太多,需要很多次
适用于输入参数较少的情况
vi1表示 y1变化一定量对y1的影响
运行一次,得到的是某个yj对所有输入的偏导
有时需要储存一些中间量。来计算导数
通过Graph来实现
把反向过程表示成graph
要被用来反向传播的值进行保存,其他值丢弃
反向传播求导时,建立一个新的graph
tensorflow 谷歌开发
pytorch facebook开发
软硬件介绍
深度学习库,python
运行速度较快
gpu,集群,移动端的实现方式
AI搜索
有一个tensor数据库
有一款IO库
C++和python协同编程
有一个非常丰富的预训练库
描述多层网络模型以及训练推断的编程语言及工具类库
编程语言
计算图
会自动微分,优化网络结构参数
编译器 加速线性代数 优化计算图
能够优化tensorflow计算的编译器
利用数据流图进行数值计算的软件库
图中的节点表述数学运算
图中的边表示他们传递的数据(张量)
张量从图的一端流动到另一端,即tensorflow
tensor的属性:rank(维数),shape,datatype
tensorflow2.0实现
定义了一个函数f(g(x+y),2*x)
在声明这个函数的时候,就立即计算x+y等
C属于立即执行
不立即执行:声明了c=a+b的时候,c并没有没计算,只是记录了这么一个函数关系
一套高级API,用来快速搭建神经网络
基于Tensorflow实现的程序库
基于人工神经元的代码分析
采用符号微分方法
由后往前,从最后一个节点开始,找到所有依赖C的节点I,并计算倒数
C++的Eigen库
gemmlowp 低精度矩阵库的加快量化运算
包括训练数据的读取、转换、队列
县独去数据,得到一个混洗队列
在经过预处理,得到一个有序的队列
读取参数,前向传播,计算结果
根据损失函数,反向更新梯度,更新网络模型参数
同时,每一段周期进行一次检验,查看训练效果,判断是否停止
选择模型
输入层、隐藏层,输出层
选择的初始化方法,激活函数、损失函数
优化函数。孙是函数,幸能评估
回调函数,数据预处理
上层是训练库和腿短裤,步数最终生成的模型在不同设备上
中间层是python和C++
底层,网络,设备
层级,数据集
一种张量运算
输入是多维数组的数据
卷积核是一个多维数组
通道数和输入相同
输入长度W
卷积核大小F
移动的步长S
填充 zero padding
输出长度 L = (W-F+2P)/S+1
各个卷积核可以并行运行
加入了权值共享,池化,补零等操作
1*1卷积层,全局池化
VGG 降参
残差思想 增加了skip connection,跨层传播
一层层提取特征
从局部到整体
在时间维度上,内一个时间不处理时,共享相同的权重
用于模型检测预测问题
y 训练目标
L 孙是函数
o 网络输出
h 状态/隐藏单元
x 输入
在不同的时间不上采用相同的UVW参数
一个时间上从序列起点开始移动的RNN,和另一个时间上从序列末尾开始移动的RNN
梯度消失、梯度爆炸问题
最初和最后的时间步的梯度过大或者过小
梯度截断:当梯度大于一定值时。设为最大值
记忆单元 输入门 遗忘门 输出门
增加了一个主输入单元和其他辅助门
辅助单元可以寄存时间序列的输入,在训练过程中会利用后向传播的方式进行。
记忆单元和这些门单元的组合,大大提升了RNN处理远距离依赖问题的能力 ,解决RNN网络收敛慢的问题
对LSTM的建华
把LSTM的输入们和遗忘门合并,用于控制历史信息
输入对输出问题
依照拓扑连接结构,将大量的神经元组织起来,构成规模化的深度的网络
拓扑结构:每一层
全连接网络Dense
单个人工神经元,输入ld,参数ld,输出标量0d
一层人工神经元构成一个Layer
输出的shape和Layer的shape一致
batch_size 会影响输出的shape
超参数U 神经元的个数
归一化,计算概率分布向量
由多个Dense层组成
没有激活函数
可以通过softmax计算一个概率分布
全连接对应的权重网络较大
局部权重共享
卷积层后面通常跟着一个下采样层
用于处理图像
超参数:卷积核个数,核大小,补零数,步长
缩小模型规模
结构是3d的
超参数
最大池化,平均池化
减少CNN的过拟合
超参数:丢弃率
对于
对于所有的输入, 有keep_prob概率保
留并乘以1/keep_prob, 以保证前后总
和大致相等, 否则输出0
相当于一个三层全连接
h有一个环,意味着这个时候的参数会影响下一个时候的参数
权重共享:
通过上一时刻的状态,输入参数,b的叠加得到a
a激活得到h
给定输入长度,把输入序列化
输入离散化
收集所有时刻的输出,计算loss
损失:负对数似然
h输入,通过U矩阵得到隐藏层,再输出,期望为e
然后e输入,通过U矩阵和前一级的隐藏层得到这时候的隐藏层,再通过隐藏层输出
keras.layers.RNN
解决梯度爆炸和梯度小时的问题
门单元:Gate
控制数据通过Sigmoid函数后,变成了一个范围在0-1之间的tensor
增加了一个辅助记忆单元和三个辅助门单元
控制是否输入、存储、输出
增加了远距离处理能力
通过ht-1和xt得到这时候的控制信号ft
ft决定要遗忘上一级Ct的多少比例
unit,激活函数,
把遗忘门和输入们组合为一个单一的更新们
如果重置门关闭,会忽略掉历史信息
LSTM的cell状态