【glory558】TF学习笔记总结记录

人工智能
深度学习

#1

第一次接触TensorFlow,希望能抓住AI的尾巴,努力学习。

思考题 1、机器学习中,监督学习 or 非监督学习概念区分,应⽤用场景调研? 监督学习:通过外部的响应变量(Response Variable)来指导模型学习我们关心的任务,并达到我们需要的目的。所有训练样本的label是已知的。例子:垃圾邮件过滤、document classification、房价预测、癌症预测等。 非监督学习:非监督学习的核心,往往是希望发现数据内部的潜在结构和规律,为我们进行下一步决断提供参考,是没有label的。例子:聚类、消费者划分。 2、做机器学习项⽬目,有哪些环节? ML Framework Step 1: define a set of function(model) Step 2: goodness of function f  Training data Step 3: pick the best function f* 3、深度学习,目前有哪些应⽤用领域? 例子:影像照片辨识、Go系统、语音翻译、自动驾驶、音乐作曲、绘画、手势识别、个性化、脑肿瘤检测、3D设计、生物信息学、对话系统…… 4、数据预处理,需要注意哪些?(整理自网络) 数据预处理有四个任务,数据清洗、数据集成、数据 变换和数据规约。 一、数据清洗

  1. 缺失值处理 处理缺失值分为三类:删除记录、数据补差和不处理。 2.异常值处理 (1)删除有异常值的记录 (2)视为缺失值 (3)平均值修正 (4)不处理 要分析异常值的原因,再决定取舍。 二、数据集成 将多个数据源放在一个统一的数据仓库中。 1.实体识别 同名异义、异名同义、单位不统一 2.冗余属性识别 同一属性多次出现、同一属性命名不一致 三、数据变换 对数据进行规范化处理 1.简单函数变换:原始数据进行数学函数变换,平方、开方、取对数、差分运算。用来将不具有正太分布的数据变换成具有正太性的数据。 时间序列分析中,对数变换或者差分运算可以将非平稳序列转换为平稳序列。 2.规范化:消除指标间量纲影响 3.连续属性离散化 将连续属性变为分类属性,即连续属性离散化。数据离散化本质上通过断点集合将连续的属性空间划分为若干区,最后用不同的符号或者整数值代表落在每个子区间中的数据。离散化涉及两个子任务:确定分类以及如何将连续属性值映射到这些分类值。 (1)等宽法 (2)等频法 (3)基于聚类分析的方法 4.属性构造 利用已有的属性构造新的属性,并加到现有的属性中。 5.小波变换 非平稳序列的分析手段。 基于小波变换的特征提取方法: (1)基于小波变换的多尺度空间能量分布特征提取法 (2)基于小波变换的多尺度空间的模极大特征值提取法 (3)基于小波变换的特征提取方法 (4)基于适应性小波神经网络的特征提取方法 四、数据规约 降低无效,错误数据对建模的影响,提高建模的准确性。少量且代表性的数据将大幅缩减数据挖掘所需时间。降低存储数据成本。 1.属性规约
  2. 合并属性
  3. 逐步向前选择
  4. 逐步向后删除
  5. 决策树归纳
  6. 主成分分析 2.数值规约 通过选择替代的、较小的数据来减少数据量,包含有参数方法和无参数方法两类;有参数方法使用模型评估数据,不需要存放真实数据,只需要存放参数,例如回归、对数线性模型。无参数需要数据,例如直方图、聚类、抽样。 5、tensorflow运⾏原理,架构有哪些核心点? http://blog.csdn.net/stdcoutzyx/article/details/51645396 6、学习中的知识点收获记录? 学习笔记:生物本能、人类设定好的天生本能 Hand-crafted rules:僵化,永远无法超越创造人,按照人类设定好的规定执行; 花费大量人力物力。 Machine learning=寻找function 注:有时没有label的data对学习有帮助 ML有regression、classification、semi-supervised learning、unsupervised learning、Structured Learning: 机器输出复杂结构、reinforce learning、transfer learning Supervised VS reinforcement learning: Supervised:告知正确答案 Reinforcement: 从评价中学习,不告知正确答案,需要机器自己学习strong intelligence,没有办法做classification的时候才会用reinforce learning

#2

加油,共同努力~~


#3

思考题 1、机器学习中,监督学习 or 非监督学习概念区分,应⽤用场景调研? 监督学习:通过外部的响应变量(Response Variable)来指导模型学习我们关心的任务,并达到我们需要的目的。所有训练样本的label是已知的。例子:垃圾邮件过滤、document classification、房价预测、癌症预测等。 非监督学习:非监督学习的核心,往往是希望发现数据内部的潜在结构和规律,为我们进行下一步决断提供参考,是没有label的。例子:聚类、消费者划分。 2、做机器学习项⽬目,有哪些环节? ML Framework Step 1: define a set of function(model) Step 2: goodness of function f  Training data Step 3: pick the best function f* 3、深度学习,目前有哪些应⽤用领域? 例子:影像照片辨识、Go系统、语音翻译、自动驾驶、音乐作曲、绘画、手势识别、个性化、脑肿瘤检测、3D设计、生物信息学、对话系统…… 4、数据预处理,需要注意哪些?(整理自网络) 数据预处理有四个任务,数据清洗、数据集成、数据 变换和数据规约。 一、数据清洗

  1. 缺失值处理 处理缺失值分为三类:删除记录、数据补差和不处理。 2.异常值处理 (1)删除有异常值的记录 (2)视为缺失值 (3)平均值修正 (4)不处理 要分析异常值的原因,再决定取舍。 二、数据集成 将多个数据源放在一个统一的数据仓库中。 1.实体识别 同名异义、异名同义、单位不统一 2.冗余属性识别 同一属性多次出现、同一属性命名不一致 三、数据变换 对数据进行规范化处理 1.简单函数变换:原始数据进行数学函数变换,平方、开方、取对数、差分运算。用来将不具有正太分布的数据变换成具有正太性的数据。 时间序列分析中,对数变换或者差分运算可以将非平稳序列转换为平稳序列。 2.规范化:消除指标间量纲影响 3.连续属性离散化 将连续属性变为分类属性,即连续属性离散化。数据离散化本质上通过断点集合将连续的属性空间划分为若干区,最后用不同的符号或者整数值代表落在每个子区间中的数据。离散化涉及两个子任务:确定分类以及如何将连续属性值映射到这些分类值。 (1)等宽法 (2)等频法 (3)基于聚类分析的方法 4.属性构造 利用已有的属性构造新的属性,并加到现有的属性中。 5.小波变换 非平稳序列的分析手段。 基于小波变换的特征提取方法: (1)基于小波变换的多尺度空间能量分布特征提取法 (2)基于小波变换的多尺度空间的模极大特征值提取法 (3)基于小波变换的特征提取方法 (4)基于适应性小波神经网络的特征提取方法 四、数据规约 降低无效,错误数据对建模的影响,提高建模的准确性。少量且代表性的数据将大幅缩减数据挖掘所需时间。降低存储数据成本。 1.属性规约
  2. 合并属性
  3. 逐步向前选择
  4. 逐步向后删除
  5. 决策树归纳
  6. 主成分分析 2.数值规约 通过选择替代的、较小的数据来减少数据量,包含有参数方法和无参数方法两类;有参数方法使用模型评估数据,不需要存放真实数据,只需要存放参数,例如回归、对数线性模型。无参数需要数据,例如直方图、聚类、抽样。 5、tensorflow运⾏原理,架构有哪些核心点? http://blog.csdn.net/stdcoutzyx/article/details/51645396 6、学习中的知识点收获记录? 学习笔记:生物本能、人类设定好的天生本能 Hand-crafted rules:僵化,永远无法超越创造人,按照人类设定好的规定执行; 花费大量人力物力。 Machine learning=寻找function 注:有时没有label的data对学习有帮助 ML有regression、classification、semi-supervised learning、unsupervised learning、Structured Learning: 机器输出复杂结构、reinforce learning、transfer learning Supervised VS reinforcement learning: Supervised:告知正确答案 Reinforcement: 从评价中学习,不告知正确答案,需要机器自己学习strong intelligence,通常情况没有办法做classification的时候才会用reinforce learning

#4

import tensorflow as tf #练习一 四则运算 x=tf.constant(2) y=tf.constant(3) z=tf.constant(7) sess=tf.Session() res1=tf.add(z,tf.multiply(x,y)) print(sess.run(res1))

#练习二 矩阵乘法 A=tf.constant([[3.,3.]]) B=tf.constant([[2.],[2.]]) sess=tf.Session() res2=tf.matmul(A,B) print (sess.run(res2))


#5

Week 2作业 1、back propagation 算法原理理解? L(θ)=∑_(n=1)^N▒〖C^n (θ),〗 ∂L(θ)/∂w=∑_(n=1)^N▒(∂C^n (θ))/∂w Chain rule: ∂c/∂w=∂z/∂w ∂c/∂z Forward pass: compute ∂z/∂w for all parameter,z=x1w1+x2w2+b,∂z/∂w1=x1,∂z/∂w2=x2 Backward pass: compute ∂c/∂z for all activation function inputs z,compute ∂c/∂z from the output layer,a=σ(z) ∂c/∂z=∂a/∂z ∂c/∂a=σ^’ (z)(w3 ∂c/(∂z^’ )+w4 ∂c/∂z’’)…

2、sigmoid函数、tanh函数和ReLU函数的区别?以及各自的优缺点?对应的tf函数是? 一、sigmod(x)函数 sigmod函数的数学公式为sigmod(x)=1/(1+e^(-x) ) 函数取值范围(0,1),函数图像下图所示: 二、tanh(x) 函数 tanh(x)函数的数学公式为: 函数取值范围(-1,1),函数图像下图所示: 三、ReLU(校正线性单元:Rectified Linear Unit)激活函数 ReLU函数公式为:max(0,x)={0,x,if x ≤ 0if x > 0} 优点:使用 ReLU 得到的SGD的收敛速度会比 sigmoid/tanh 快很多。有人说这是因为它是linear,而且 non-saturating 相比于 sigmoid/tanh,ReLU 只需要一个阈值就可以得到激活值,而不用去算一大堆复杂的运算。

3、softmax和cross_entropy原理解释? Softmax:假设我们有一个数组,V,Vi表示V中的第i个元素,那么这个元素的softmax值就是S_i=e^i/(∑_j▒e^j )。softmax用于多分类过程中,它将多个神经元的输出,映射到(0,1)区间内,可以看成概率来理解,从而来进行多分类!softmax的思想是为神经网络定义一个新型的输出层。神经网络的前面层是与sigmoid层一致的,最后一层的加权输入为: cross_entropy:假设有两个分布p、q,则它们在给定样本集上的交叉熵定义如下: CEH(p,q)=Ep[−logq]=−∑x∈Xp(x)logq(x)=H§+DKL(p||q)

4、tf.placeholder() 、tf.constant()、tf.Variable()的区别? tf.constant(value,dtype=None,shape=None,name=’Const’) 创建一个常量tensor,按照给出value来赋值,可以用shape来指定其形状。value可以是一个数,也可以是一个list。 如果是一个数,那么这个常亮中所有值的按该数来赋值。 如果是list,那么len(value)一定要小于等于shape展开后的长度。赋值时,先将value中的值逐个存入。不够的部分,则全部存入value的最后一个值。 Variable表示变量,与Tensor不同,Variable必须初始化以后才能使用。例如:W = tf.Variable(tf.zeros(shape=[1,2])) placeholder与Variable较为相似,区别在于placeholder常用来表示输入及输出,而Variable常用来表示中间变量。placeholder至少要求指定变量类型和shape。

5、举例说明:tf.Graph() 概念理解? 使用tensorflow训练神经网络包括两部分:构建计算图和运行计算图。 首先构建图,一个计算图包含了一组操作(operation objects,也叫节点)和一些tensor objects(节点之间传递的数据单元)。系统会默认构建一个计算图,这也是mnist入门案例上来就可以定义节点的原因。

6、tf.name_scope()和tf.variable_scope()的理解? tf.variable_scope可以让变量有相同的命名,包括tf.get_variable得到的变量,还有tf.Variable的变量;tf.name_scope可以让变量有相同的命名,只是限于tf.Variable的变量

7、tf.variable_scope() 和tf.get_variable()的理解? 变量共享主要涉及到两个函数:tf.get_variable(, , ) 和 tf.variable_scope(<scope_name>)。 在tensorflow中提供了tf.get_variable函数来创建或者获取变量。当tf.get_variable用于创建变量时,则与tf.Variable的功能基本相同。tf.get_variable 和tf.Variable不同的一点是,前者拥有一个变量检查机制,会检测已经存在的变量是否设置为共享变量,如果已经存在的变量没有设置为共享变量,TensorFlow 运行到第二个拥有相同名字的变量的时候,就会报错。为了解决这个问题,TensorFlow 又提出了 tf.variable_scope 函数:它的主要作用是,在一个作用域 scope 内共享一些变量。先通过tf.variable_scope生成一个上下文管理器,并指明需求的变量在这个上下文管理器中,就可以直接通过tf.get_variable获取已经生成的变量。在上下文管理器中已经生成一个v的变量,若想通过tf.get_variable函数获取其变量,则可以通过reuse参数的设定为True来获取(可以将reuse按照字面意思理解,重用).并且tf.variable_scope只能获取已经创建过的变量。如果tf.variable_scope函数使用参数reuse=None或者reuse=False创建上下文管理器,则tf.get_variable函数可以创建新的变量。但不可以创建已经存在的变量即为同名的变量。

8、tf.global_variables_initializer() 什么时候使用? 变量的初始化必须找模型的其他操作之前,而且必须显示的运行。最简单的方式是添加一个节点用于初始化所有的变量,然后在使用模型之前运行这个节点。使用tf.global_variables_initializer()添加节点用于初始化所有的变量。在你构建完整个模型并在会话中加载模型后,运行这个节点。

9、学习中的知识点收获记录? 1958:Perceptron(linear model) 1969:Perceptron has limitation 1980s:Multi-layer perceptron 1986:Backpropagation 1989:1 hidden layer is good enough 2006:RBM initialization 2009:GPU 2012:image比赛 Deep learning 三步骤与machine learning一样 Step1:define a neural network function set Step2:define goodness of function:corss_entropy越小越好,total loss最小 Step3:pick the best function 连接方式:fully connected network/… Matrix operation:σ…(w2(σ(w1x+b1))+b2),通常最后一个layer加上softmax 决定network structure很重要,how many layers、how many neurons for each layer:Train and Error+Intuition Deep learning 也用gradient descent 进行training


【evaqin】TF学习笔记总结记录
#6

week1 思考问题: 1、机器学习中,监督学习 or ⾮监督学习概念区分,应⽤场景调研? 监督学习:通过输入和输出(Label or Scalar)来训练模型,达到模式识别或结果预测的效果。如:垃圾邮件过滤、放假预测、物体识别等。 非监督学习:训练集只有输入,没有输出,通过数据集发现数据内部的潜在规律,为一下决断提供参考,如消费者划分,体质测试划分等。

2、做机器学习项目,有哪些环节? Step 1: define a set of function(model) 定义一个方程(模型)集 Step 2: goodness of function f by Training data 通过训练集检测模型性能 Step 3: pick the best function f* 选出最佳的方程

3、深度学习、目前有哪些应用领域? 人脸识别、医学影像辨识、细胞辨识判断白血病、中医面诊、语音识别、自动驾驶等。

4、数据预处理,需要注意哪些? 数据预处理有四个任务,数据清洗、数据集成、数据 变换和数据规约。 一、数据清洗

  1. 缺失值处理 处理缺失值分为三类:删除记录、数据补差和不处理。 2.异常值处理 (1)删除有异常值的记录 (2)视为缺失值 (3)平均值修正 (4)不处理 要分析异常值的原因,再决定取舍。 二、数据集成 将多个数据源放在一个统一的数据仓库中。 1.实体识别 同名异义、异名同义、单位不统一 2.冗余属性识别 同一属性多次出现、同一属性命名不一致 三、数据变换 对数据进行规范化处理 1.简单函数变换:原始数据进行数学函数变换,平方、开方、取对数、差分运算。用来将不具有正太分布的数据变换成具有正太性的数据。 时间序列分析中,对数变换或者差分运算可以将非平稳序列转换为平稳序列。 2.规范化:消除指标间量纲影响 3.连续属性离散化 将连续属性变为分类属性,即连续属性离散化。数据离散化本质上通过断点集合将连续的属性空间划分为若干区,最后用不同的符号或者整数值代表落在每个子区间中的数据。离散化涉及两个子任务:确定分类以及如何将连续属性值映射到这些分类值。 (1)等宽法 (2)等频法 (3)基于聚类分析的方法 4.属性构造 利用已有的属性构造新的属性,并加到现有的属性中。 5.小波变换 非平稳序列的分析手段。 基于小波变换的特征提取方法: (1)基于小波变换的多尺度空间能量分布特征提取法 (2)基于小波变换的多尺度空间的模极大特征值提取法 (3)基于小波变换的特征提取方法 (4)基于适应性小波神经网络的特征提取方法 四、数据规约 降低无效,错误数据对建模的影响,提高建模的准确性。少量且代表性的数据将大幅缩减数据挖掘所需时间。降低存储数据成本。 1) 属性规约 1.合并属性 2.逐步向前选择 3.逐步向后删除 4.决策树归纳 5.主成分分析 2) 数值规约 通过选择替代的、较小的数据来减少数据量,包含有参数方法和无参数方法两类;有参数方法使用模型评估数据,不需要存放真实数据,只需要存放参数,例如回归、对数线性模型。无参数需要数据,例如直方图、聚类、抽样。

5、tensorflow运行原理,架构有哪些核心点? http://blog.csdn.net/stdcoutzyx/article/details/51645396 http://blog.csdn.net/mzpmzk/article/details/77337851

6、学习中的知识点收获记录。 1-人工智能、机器学习与深度学习的关系。 人工智能是目标,使机器能够跟人一样聪明。 机器学习是使机器能使机器具有学习能力的手段。 深度学习是机器学习的一种方法 2-machine learning = look for a function 3-成功安装了TensorFlow并完成了练习。 4-对机器学习的任务和场景有了比较深入的了解,知道其中的关系与区别。


#7

怎么把作业发到了@glory558的总结帖下了:joy:


#8

Week 3笔记 1、Batch Normalization 原理解释&benefit(优点) ? BN的基本思想:因为深层神经网络在做非线性变换前的激活输入值,随着网络深度加深或者在训练过程中,其分布逐渐发生偏移或者变动,之所以训练收敛慢,一般是整体分布逐渐往非线性函数的取值区间的上下限两端靠近,所以这导致后向传播时低层神经网络的梯度消失,这是训练深层神经网络收敛越来越慢的本质原因,而BN就是通过一定的规范化手段,把每层神经网络任意神经元这个输入值的分布强行拉回到均值为0方差为1的标准正太分布而不是正态分布,其实就是把越来越偏的分布强制拉回比较标准的分布,这样使得激活输入值落在非线性函数对输入比较敏感的区域,这样输入的小变化就会导致损失函数较大的变化,意思是这样让梯度变大,避免梯度消失问题产生,而且梯度变大意味着学习收敛速度快,能大大加快训练速度。 对于每个隐层神经元,把逐渐向非线性函数映射后向取值区间极限饱和区靠拢的输入分布强制拉回到均值为0方差为1的比较标准的正态分布,使得非线性变换函数的输入值落入对输入比较敏感的区域,以此避免梯度消失问题。 BatchNorm效果好。不仅仅极大提升了训练速度,收敛过程大大加快,还能增加分类效果,一种解释是这是类似于Dropout的一种防止过拟合的正则化表达方式,所以不用Dropout也能达到相当的效果。另外调参过程也简单多了,对于初始化要求没那么高,而且可以使用大的学习率等。 2、如何理解卷积? 定义两个实值函数 x(t) , w(t) 则其卷积定义为: s(t)=∫x(a)w(t−a)da通常记为: s(t)=(x∗w)(t)上面的式子有点晦涩难懂,我们不妨回顾一下整数乘法: 一个 N 位的正整数 x 乘以一个 M 位的正整数 y ,其结果为 z ,毫无疑问, z 是一个 M+N−1 位或 M+N 位的正整数。那么其第 k+1 位是怎么得到的?实际上(数组从下标0开始), z(k)=x(0)∗y(k)+x(1)∗y(k−1)+…+x(k)∗y(0)也就是 z(k)=Σki=0x(i)y(k−i)。由于离散序列的求和即为连续序列的积分,对比卷积定义式,可以看出正整数乘法实际上就是一种卷积操作。 3、 如何理卷积神经网络(CNN)中的卷积(Convolution Kernel)和池化(Pooling)&有哪些Pooling? Pooling layers: make the representation smaller and more manageable, operate over each activation map independently 一般池化(General Pooling):池化作用于图像中不重合的区域(这与卷积操作不同) 重叠池化(OverlappingPooling):相邻池化窗口之间会有重叠区域,此时sizeX>stride 空金字塔池化(Spatial Pyramid Pooling):空间金字塔池化可以把任何尺度的图像的卷积特征转化成相同维度,这不仅可以让CNN处理任意尺度的图像,还能避免cropping和warping操作,导致一些信息的丢失,具有非常重要的意义。 Max pooling 4、Learning Rate 的如何选取,它过大/过小会产生什么影响? 对于学习率的设定,我们可以选择一个合适的学习率(例如0.1),然后多次尝试不同的学习率,检查在最开始时网络误差梯度下降的趋势,以期获得最佳的速度和准确性,最后在fine-tune。微调网络的时候再次调整网络的学习率。 常用的迭代方法有两种:批量梯度下降法(Batch Gradient Descent)和随机梯度下降法(Stochastic Gradient Descent)。梯度下降算法对局部极值敏感,但是对于线性回归问题只有整体极值,没有局部极值,所以在这种情况下,算法总是收敛的。对于随机梯度下降算法,其收敛速度要快于批量梯度下降算法,但是它在最小值附近震荡的幅度较大,所以可能不会收敛于true minimum。 过大的学习速率会导致损失函数越来越大,模型距离最优解(或次优解)越来越远。学习率过小会造成费时。 5、机器学习中,有哪些正则化的方法?是什么?Dropout的好处是? 正则化中我们将保留所有的特征变量,但是会减小特征变量的数量级(参数数值的大小θ(j))。这个方法非常有效,当我们有很多特征变量时,其中每一个变量都能对预测产生一点影响。 正则化方法:Regularized Linear Regression、Regularized Logistic Regression、Early stopping Dropout在training时对每一个神经元做sampling,以此来决定是否被丢弃,再去train新的神经网络。For each mini-batch,要重新sample。加上dropout后结果造成training结果不好,testing结果变好。在testing时,不做dropout,所有神经元都要用,同时要在testing时假设dropout rate变成(1-p)%。Training和testing用的rate不一样。Dropout是一种ensemble方法,training时一些参数是共享的,多个mini-batch共同train某些参数。 Dropout的出现很好的可以解决过拟合问题,每次做完dropout,相当于从原始的网络中找到一个更瘦的网络。对于一个有N个节点的神经网络,有了dropout后,就可以看做是2n个模型的集合了,但此时要训练的参数数目却是不变的,这就解脱了费时的问题。 6、Covariate Shift 和 Internal Covariate Shift 如何理解? 假设q1(x)是测试集中一个样本点的概率密度,q0(x)是训练集中一个样本点的概率密度。最终我们估计一个条件概率密度p(y|x,θ),它由x和一组参数θ={θ1,θ2…θm}所决定。对于一组参数来说,对应loss(θ)函数评估性能的好坏。传统机器学习假设训练集和测试集是独立同分布的,即q0(x)=q1(x),所以可以推出最优θ’依然可以保证q1(x)最优。但现实当中这个假设往往不成立,伴随新数据产生,老数据会过时,当q0(x)不再等于q1(x)时,就被称作covariate shift。 神经网络在训练时候,每一层的输入的分布都在发生变化(训练时候,网络的参数会更新),这就要求网络的初始化权重不能随意设置,而且学习率也比较低。因此,我们很难使用饱和非线性部分去做网络训练,作者称这种现象为internal covariate shift。 7、如何理解Momentum?weight decay?它们在神经网络训练中的作用是什么? Momentum——将惯性融入gradient descent。每一次移动的方向是现在的方向加上前一个时间点的方向。加上momentum之后movement=negative of ∂L/∂w+momentum(上一个时点的movement) weight decay——在实际应用中,为了避免网络的过拟合,必须对价值函数(Cost function)加入一些正则项,在SGD中加入ηλw_i这一正则项对这个Cost function进行规范化: 这个公式基本思想就是减小不重要的参数对最后结果的影响,网络中有用的权重则不会收到Weight decay影响。在机器学习或者模式识别中,会出现overfitting,而当网络逐渐overfitting时网络权值逐渐变大,因此,为了避免出现overfitting,会给误差函数添加一个惩罚项,常用的惩罚项是所有权重的平方乘以一个衰减常量之和。其用来惩罚大的权值。 8、如何理解“过拟合 overfitting”? 神经网络训练,如何避免overfitting? 过拟合 overfitting是指在training set结果好,但test set结果不好。避免overfitting的方法:增大训练集、early-stopping、Regulization、Dropout 9、各种优化方法(SGD/Momentum/Adagrad/Adam等),对比优缺点? SGD:指stochastic gradient descent,即随机梯度下降,是梯度下降的batch版本。当训练数据太多时,利用整个数据集更新往往时间上不显示。batch的方法可以减少机器的压力,并且可以更快地收敛。优点:当训练集有很多冗余时,batch方法收敛更快。以一个极端情况为例,若训练集前一半和后一半梯度相同。那么如果前一半作为一个batch,后一半作为另一个batch,那么在一次遍历训练集时,batch的方法向最优解前进两个step,而整体的方法只前进一个step。SGD方法的一个缺点是,其更新方向完全依赖于当前的batch,因而其更新十分不稳定。 Momentum:即动量,它模拟的是物体运动时的惯性,即更新的时候在一定程度上保留之前更新的方向,同时利用当前batch的梯度微调最终的更新方向。这样一来,可以在一定程度上增加稳定性,从而学习地更快,并且还有一定摆脱局部最优的能力。 Adagrad:自适应地为各个参数分配不同学习率的算法,每一个parameter有一个learning rate,use first derivative to estimate second derivative,不够动态 RMSProp:可以调整α,给新旧gradient赋予不同的α Adam:RMSProp+ Momentum 10、经典的卷积神经网络(CNN)之⼀,LeNet5模型详细解释? LeNet-5共有7层(不包含输入),每层都包含可训练参数。 输入图像大小为3232,比MNIST数据集的图片要大一些,这么做的原因是希望潜在的明显特征如笔画断点或角能够出现在最高层特征检测子感受野(receptive field)的中心。因此在训练整个网络之前,需要对2828的图像加上paddings(即周围填充0)。 C1层:该层是一个卷积层。使用6个大小为55的卷积核对输入层进行卷积运算,特征图尺寸为32-5+1=28,因此产生6个大小为2828的特征图。这么做够防止原图像输入的信息掉到卷积核边界之外。 S2层:该层是一个池化层(pooling,也称为下采样层)。这里采用max_pool(最大池化),池化的size定为22,池化的具体过程如下图(图引自cs231n) 经池化后得到6个1414的特征图,作为下一层神经元的输入。 C3层:该层仍为一个卷积层,我们选用大小为55的16种不同的卷积核。这里需要注意:C3中的每个特征图,都是S2中的所有6个或其中几个特征图进行加权组合得到的。输出为16个1010的特征图。 S4层:该层仍为一个池化层,size为22,仍采用max_pool。最后输出16个55的特征图,神经元个数也减少至1655=400。 C5层:该层我们继续用55的卷积核对S4层的输出进行卷积,卷积核数量增加至120。这样C5层的输出图片大小为5-5+1=1。最终输出120个11的特征图。这里实际上是与S4全连接了,但仍将其标为卷积层,原因是如果LeNet-5的输入图片尺寸变大,其他保持不变,那该层特征图的维数也会大于11。 F6层:该层与C5层全连接,输出84张特征图。 输出层:该层与F6层全连接,输出长度为10的张量,代表所抽取的特征属于哪个类别。 11、学习中的知识点收获记录? 【CNN】 ConvNets are everywhere: self-driving car, video, Go, diagnoses, recognition, image caption CNN: Preserve Spatial structure, filter always extend the full depth of the input volume Output size: (N-F)/stride+1,如果有zero padding,要重新调整N 例子:input volume: 32323, 10 55 filters with stride 1, pad 2 Output volume size: (32+22-5)/1+1=32 spatially, 3232103232 for each layer, 10 filters Number of parameters: each filter has 553+1=76 params, (+1 for bias) =>76*10=760 Stride的意义是downsampling the size, pooling 的意义也是 对pooling layer用zero-padding不常见,会出现问题 【Tips for training DNN】 Deeper does not imply better Network越多,衰减次数越多,对output的影响是很小的vanish gradient problem 选择ReLU理由:运算速度快;生物上的原因;无限多不同bias的Sigmoid方程叠加;解决vanish gradient problem Maxout:Learnable activation function, ReLU是特殊情况的maxout, can be any piecewise linear convex function Hard to find optimal network parameters:在一个很大的NN中没有很多local minimum