Pelhans Blog

道阻且长,行则将至

深度学习笔记(十)

Attention 基础

* TOC {:toc} # 什么是 Attention 在传统的 encoder-decoder 模型中,encoder 读取输入的句子将其转换为一个定长的向量,然后decoder 再将这个向量解码为对应的输出。然而,此时信息被压缩到一个定长的向量中,内容比较复杂,同时对于较长的输入句子,转换成定长向量可能带来一定的损失,因此随着输入序列长度的上升,这种结构的效果面临着挑战。 Atte...

深度学习笔记(九)

循环神经网络基础

* TOC {:toc} # 概览 循环神经网络或RNN 是一类用于处理序列数据的神经网络,循环神经网络可以扩展到更长的序列,大多数循环网络也能处理可变长度的序列。同事,循环神经网络以不同的方式共享参数,输出的每一项是前一项的函数,输出的每一项对先前的输出应用相同的更新规则产生,这种循环方式导致参数通过很深的计算图共享。 # 展开计算图 循环神经网络的一般定义为: $$ h^{t} ...

深度学习笔记(八)

卷积神经网络基础

* TOC {:toc} # 概览 卷积神经网络 是一种专门用来处理具有类似网格结构的数据的神经网络。CNN 近年来在很多领域都表现优异。卷积神经网络依次的来源是因为该网络使用了卷积这种数学运算。卷积是一种特殊的线性运算。卷积网络是指那些至少在网络的一层中使用卷积运算来替代一般的矩阵乘法运算的神经网络。 卷积网络中一个典型层包含三级。第一级是卷积级,并行地计算多个卷积产生一组线性激活响应...

深度学习笔记(七)

激活函数

* TOC {:toc} # 概览 激活函数是神经网络的一个重要组成部分,它可以**将线性分类器转换为非线性分类器**,这已被证明是近年来在各种任务重所见到的高性能的关键。不同的激活函数在实践中经常表现出非常多样的行为。例如 **Sigmoid 函数,在过去非常流行。它可以将任意范围的输入转化为0-1之间的输出,逻辑回归中就用它来做二分类问题。在早起网络不深的时候用它效果很好,但随着网络...

深度学习笔记(六)

正则化项

* TOC {:toc} # 概览 **正则化的本质就是对参数的先验假设**。通过对参数的正则化,以偏差的增加换取方差的减少,从而使得机器学习算法的泛化性增加。**偏差度量着偏离真实函数或者参数的误差期望,而方差度量着数据上任意特定采样可能导致的估计期望的偏差**。因此高偏差相当于模型欠拟合,而高方差是过拟合,导致泛化能力弱。大多数机器学习算法则是在偏差-方差,经验风险-结构风险之间做权...

深度学习笔记(五)

常见损失函数

* TOC {:toc} # 概览 损失函数用来估计模型的预测值与真实值之间的不一致程度。模型通过预定的损失函数进行学习并更新参数,同时它也是一种评估模型好坏的方法。根据机器学习任务的不同,损失函数可分为分类和回归两大类,下面我们对常见的损失函数做一个总结。该文章将保持更新。 # 分类 ## 0-1 损失 0-1 损失函数的形式是最简单的,它的公式为: $$ l(y_{i}, \h...

深度学习笔记(四)

神经网络中的权值初始化

* TOC {:toc} # 概览 那么为什么会有这么多初始化策略呢?深度学习算法的训练通常是迭代的,因此要求使用者给一些开始迭代的初始点,而有些深度模型会受到初始点的影响,使得算法遭遇数值困难,并完全失败。此外初始点可以决定学习收敛的多快,以及是否收敛到一个代价高或低的点,更何况代价相近的点也可能有极大的泛化差别。不同的网络结构和激活函数需要适配不同的初始化方法。目前常用的初始化方法包...

深度学习笔记(三)

牛顿法与BFGS

* TOC {:toc} # 概览 与一阶的相比,二阶梯度方法使用二阶导数改进了优化。最广泛使用的二阶方法是牛顿法。 # 牛顿法 牛顿法是给予二阶泰勒级数展开在某点 $\theta_{0}$附近来近似 $J(\theta)$的方法,它忽略了高于二阶的导数: $$ f(x) = f(x_{0}) + \nabla f(x_{0})^{T}(x-x_{0}) + \frac{1}{2}...

深度学习笔记(二)

拉格朗日乘数法与KKT条件

* TOC {:toc} # 概览 通常情况下,最优化问题会答题可分为三种情况:无约束条件、等式约束条件、不等式约束条件,对应的算法为费马定理、拉格朗日乘数法、KKT条件。 # 无约束条件 最简单的情况,根据费马定理,解决方法通常是函数对变量求导,零导数函数等于0的点可能是极值点。将结果待会原函数进行验证即可。 # 等式约束条件 设目标函数为$f(x)$,约束条件为$h_{k}(...

深度学习笔记(一)

深度学习中的常见优化算法

* TOC {:toc} # 概览 下面列出深度学习中常用的一些优化方法: * SGD: tf.train.GradientDescentOptimizer() * Adam: tf.train.AdamOptimizer() * Adagrad: tf.train.AdagradOptimizer() * Adadetla: tf.train.Adadelta...