深度学习笔记集合
随手记录阅读资料的笔记,关于神经网络,深度学习的一些点,供自己后续查询。
感知器
神经网络的神经元,激活函数(例sigmoid),操作算子;
感知机(感知模型)y=f(wx+b),线性模型,可解决与或非等问题,一开始是不能解决异或问题;
多层感知机解决非线性问题,参数的暴涨,怎么训练得到?
从感知机开始,工作的流程,
1 | x->o->output |
参数是考证结果的指标(比如出游,考量的是天气,意愿程度,距离远近),把指标变成输入的x,然后对其赋值,完成输入,再设置w权重,最后设置阈值.
添加小的变化得到学习优化w,输入是不变的;—这就是学习.
Sigmoid neurons (逐步的渐变学习过程)–相当于是感知器,
输入是(0,1)之间的数值,输出不是0/1,而是sigmoid函数值,f(x)=1/(1+e^-x),
f(wx+b)
Sigmoid函数,值域(0,1),变量(-nan,+nan)
变化值=求偏导,线性变化,神经网络可认为是多层感知器.
在图像处理中,输入一副图像64*64的灰度图像,则是4096个神经元,4096维,灰度用0/1表示,有4096^2种可能性,
前向神经网络,前层输出是后层的输入,没有环,没有反馈,(不允许有环,这样输入就依赖于输出),
递归神经网络让环成为可能,但不是立即改变,而是随着时间会对其他神经元的输入改变,递归网络的解决的问题可以很多,很复杂,
输入是像素,隐层可以调,输出是10维向量,表示数字,另外用4个神经元,2^4=16,足够表示10个数字.为什么用10个输出神经元呢?
整体和局部,分成4个表示,就是把图像进行了分割,当然还有其他更聪明的算法使得4个输出就足够了.
比如多加一层,
成本函数,必须用光滑的,这样做一点小改变,就会产生变化(非光滑的不好优化),怎么判断一个函数光滑,求导!!
成本函数不唯一,能够达到优化目标即可,但得选择最好的(怎么定义最好)?
梯度下降,找的是全局最优(参数会有多个,一维和二维比较直观能找到).
通过微积分找到最小解,求导找极值.但是,大的网络会有上万个参数,用微积分求极值变得不可能,
梯度,梯度向量,参数的偏导,批梯度下降,
三点注意:
大量有效的数据(避免过拟合),
合适的成本函数(避免学习太慢),
权重初始化(避免学习太慢,由于神经云饱和),
卷积
卷积看成是信息的混合,每个桶有自己的配方,约定怎么跟另一个桶混合,卷积是有序的交织两个来源的数据.
图像为什么需要卷积?图像有长宽两个维度,混合两个桶信息:
第一个桶:图像信息,
像素矩阵,三个rgb通道;一个像素是[0,255]之间的整数;三个矩阵,rgb的
第二个桶:卷积核函数,浮点数矩阵,模式和大小对输入图像进行了重切割,利用卷积的核函数,
输出则是图像对应的特征,(在深度学习中的叫法)
把图像的轮廓保留,去除图像其他东西,称之为过滤,filter,核函数也被称为filter,
输入,转换输入和修正格式适于算法,—特征引擎.
递归神经网络,在固定输入数据下,可训练得到一批有序列有标记的输出.
在当前输入序列和上一次输入序列下,最大化似然概率,
特征往往不是人具备的角度可视化,需要机器角度的表示,比手动表示更佳.—表示学习;
例子:前馈网络或多层感知机(将一组输入映射到输出的数学函数),
5000标注样本情况下可实现可接受的性能;当至少1000万标注样本时将达到或超过人类表现.
比水蛭神经元还小的网络达不到人工智能效果也就正常.
特征相关
任何高阶特征都是由底层特征组合而成的;自编码器,使用高阶特征编码自己,像稀疏编码一样,通过高阶特征重构自己;
没有隐含层的网络是线性的,与线性回归一样;隐含层是对特征进行抽象变换,
优化相关
dropout
神经网络存在的缺陷是参数会很多,会过拟合,参数比数据多,dropout可以丢弃掉节点,1
tf.nn.dropout,随机把部分节点置为0,用keep_prop参数保留数据而不为0的比例,
##激活函数
sigmoid梯度会消失,
relu抑制梯度消失,