1. 相比于传统的人工提取特征(边.角等),深度学习是一种Data-Driven Approach.深度学习有统一的框架,喂不同的数据集,可以训练识别不同的物体.而人工提取特征的方式很脆弱,换一个物体就要重新设计特征. 2. 描述图像之间相似程度,可以直接把每个对应像素做减法,然后把差的绝对值累加起来.这个差值的和越小,图片越接近.这是曼哈顿距离L1. 对应像素点的差值的平方累加再开平方,这是欧几里得距离L2. L1和L2谁更好,这取决于具体问题.但一般来说,如果做差的向量有很具体的含义,比如对…
参考<deeplearning.ai 卷积神经网络 Week 2 听课笔记>. 1. AlexNet(Krizhevsky et al. 2012),8层网络. 学会计算每一层的输出的shape:对于卷积层,输出的边长 =(输入的边长 - filter的边长)/ 步长 + 1,输出的通道数等于filter的数量.每个filter的通道数等于输入的通道数.卷积层的参数 = filter的长 * filter的宽 * 输入的通道数 * filter的数量.池化层没有需要学习的参数. 图中分成两个通…
1. 非监督学习 监督学习有数据有标签,目的是学习数据和标签之间的映射关系.而无监督学习只有数据,没有标签,目的是学习数据额隐藏结构. 2. 生成模型(Generative Models) 已知训练数据,根据训练数据的分布(distribution)生成新的样例. 无监督学习中的一个核心问题是估计分布. 3. PixelRNN 和 PixelCNN 依次根据已知的像素估计下一个像素. PixelRNN(van der Oord et al. NIPS 2016):利用RNN(LSTM)从角落开始…
(没太听明白,下次重新听) 1. 增强学习 有一个 Agent 和 Environment 交互.在 t 时刻,Agent 获知状态是 st,做出动作是 at:Environment 一方面给出 Reward 信号 rt,另一方面改变状态至 st+1:Agent 获得 rt 和 st+1.目标是 Agent 学习 st 到 at 的某种映射 π* 最大化累积的 Reward,∑γtrt,其中 γt 是折现系数(discount factor). 用Markov Decision Process描…
1. 相比于传统的人工提取特征(边.角等),深度学习是一种Data-Driven Approach.深度学习有统一的框架,喂不同的数据集,可以训练识别不同的物体.而人工提取特征的方式很脆弱,换一个物体就要重新设计特征. 2. 描述图像之间相似程度,可以直接把每个对应像素做减法,然后把差的绝对值累加起来.这个差值的和越小,图片越接近.这是曼哈顿距离L1. 对应像素点的差值的平方累加再开平方,这是欧几里得距离L2. L1和L2谁更好,这取决于具体问题.但一般来说,如果做差的向量有很具体的含义,比如对…
参考<deeplearning.ai 卷积神经网络 Week 2 听课笔记>. 1. AlexNet(Krizhevsky et al. 2012),8层网络. 学会计算每一层的输出的shape:对于卷积层,输出的边长 =(输入的边长 - filter的边长)/ 步长 + 1,输出的通道数等于filter的数量.每个filter的通道数等于输入的通道数.卷积层的参数 = filter的长 * filter的宽 * 输入的通道数 * filter的数量.池化层没有需要学习的参数. 图中分成两个通…
1. Semantic Segmentation 把每个像素分类到某个语义. 为了减少运算量,会先降采样再升采样.降采样一般用池化层,升采样有各种"Unpooling"."Transpose Convolution"(文献中也叫"Upconvolution"之类的其他名字). 这个问题的训练数据的获得非常昂贵,因为需要一个像素一个像素的贴标签. 2. Classification + Localizatoin 一般用同一个网络,一方面得出分类,一…
1. 优化: 1.1 随机梯度下降法(Stochasitc Gradient Decent, SGD)的问题: 1)对于condition number(Hessian矩阵最大和最小的奇异值的比值)很大的loss function,一个方向梯度变化明显,另一个方向梯度变化很缓慢,SGD在优化过程中会震荡着下降,导致优化很慢.深度学习的网络会有上百万甚至更多的参数需要优化,在这个上百万维的空间里,更容易出现各个维度梯度变化差别很大的问题. 2)陷落在局部最小点或者鞍点(saddle point).…
(没太听明白,以后再听) 1. 如何欺骗神经网络? 这部分研究最开始是想探究神经网络到底是如何工作的.结果人们意外的发现,可以只改变原图一点点,人眼根本看不出变化,但是神经网络会给出完全不同的答案.比如下图,左边的熊猫被识别成熊猫,但是加上中间的小"噪音"一样的数值,右图的熊猫就识别不出来了.而且这个小"噪音"不是随机的,它更像是offset,是某种系统误差,叠加到图片上去,总是可以欺骗神经网络. 2. 神经网络从权重到输出的映射是非线性的,非常复杂,非常难优化.训…
1. 深度学习面临的问题: 1)模型越来越大,很难在移动端部署,也很难网络更新. 2)训练时间越来越长,限制了研究人员的产量. 3)耗能太多,硬件成本昂贵. 解决的方法:联合设计算法和硬件. 计算硬件可以分为通用和专用两大类.通用硬件又可以分为CPU和GPU.专用硬件可以分为(FPGA和ASIC,ASIC更高效,谷歌的TPU就是ASIC). 2. Algorithms for Efficient Inference 1)Pruning,修剪掉不那么重要的神经元和连接.第一步,用原始的网络训练:第…
这一节课很零碎. 1. 神经网络到底在干嘛? 浅层的是具体的特征(比如边.角.色块等),高层的更抽象,最后的全连接层是把图片编码成一维向量然后和每一类标签作比较.如果直接把图片和标签做像素级的最近领域分类,误差很大,但是转成编码之后就准多了. 可以用PCA可视化最后一层的特征,深度学习领域更高阶的做法是用t-SNE(Van der Maaten and Hinton, "Visualizting Data using t-SNE", JMLR 2008). 可视化非线性函数的激活值也可…
(没太听明白,下次重新听一遍) 1. Recurrent Neural Networks…
1. CPU vs. GPU: CPU核心少(几个),更擅长串行任务.GPU有很多核心(几千个),每一个核都弱,有自己的内存(几个G),很适合并行任务.GPU最典型的应用是矩阵运算. GPU编程:1)CUDA,只能在英伟达:2)OpenCL类似CUDA,好处是可以跑在任何平台上,但相对慢一些.深度学习可以直接调用现成的库,不用自己写CUDA代码. 用cuDNN比不用快几倍. 深度学习的瓶颈可能不在GPU的运算,而在GPU和数据的通信上,解决办法是:1)把数据读入RAM:2)用SSD而不是HDD:…
1. 激活函数: 1)Sigmoid,σ(x)=1/(1+e-x).把输出压缩在(0,1)之间.几个问题:(a)x比较大或者比较小(比如10,-10),sigmoid的曲线很平缓,导数为0,在用链式法则的时候,后一层传回来的导数乘以sigmoid的导数也是0了,换句话说,对于sigmoid饱和的区域后一层的导数传不到前面去了.(b)输出永远为正,即下一层的输入永远为正,我们希望输入的均值为0.(c)exp还是稍微有点难计算. 2)tanh(x),输出压缩在[-1,+1]之间,比sigmoid的进…
1. 之前课程里,一个32*32*3的图像被展成3072*1的向量,左乘大小为10*3072的权重矩阵W,可以得到一个10*1的得分,分别对应10类标签. 在Convolution Layer里,图像保持原样,依旧是32*32*3,把它和一个5*5*3的filter进行卷积运算(filter和原图像有相同的通道数,比如这里都是3).这里的"卷积"并不是严格按照信号处理里先把图像翻转,这里只是对应像素乘积累加,可以按照fully connected layer的写法,把5*5*3的fil…
1. Backpropagation:沿着computational graph利用链式法则求导.每个神经元有两个输入x.y,一个输出z,好多层这种神经元连接起来,这时候已知∂L/∂z,可以求出∂L/∂x = ∂L/∂z * ∂z/∂x,∂L/∂y = ∂L/∂z * ∂z/∂y.靠这种方式可以计算出最终的loss function相对于最开始的输入的导数. 这种方法的好处是,每个神经元都是很简单的运算(比如加.减.乘.除.指数.sigmoid等),它们导数的解析式是很容易求解的,用链式法则连乘…
1. Loss function是用来量化评估当前预测的好坏,loss function越小表明预测越好. 几种典型的loss function: 1)Multiclass SVM loss:一般的SVM是针对0.1两类标签,现在是把它拓展到n类标签.它的物理意义是:现在要预测一个样本的标签,根据之前训练出的权重求出这个样本在所有标签的得分,正确的标签的得分如果大于其他标签的得分(往往还会加一个safety margin,就是要求要足够大),则loss function不增加:否则loss fu…
1. 生物学家做实验发现脑皮层对简单的结构比如角.边有反应,而通过复杂的神经元传递,这些简单的结构最终帮助生物体有了更复杂的视觉系统.1970年David Marr提出的视觉处理流程遵循这样的原则,拿到图像后,先提取角.边.曲线等等简单的几何元素,然后再用深度信息.表面信息等更高层的复杂信息,最后是更高层的更抽象的表达. 深度学习也是遵循这样的基本思想,从最简单的特征出发,通过多层函数传递,实现复杂的功能. 2. Image-Net比赛,2012年突破性的变化,AlexNet用卷积神经网络大幅提…
1. Semantic Segmentation 把每个像素分类到某个语义. 为了减少运算量,会先降采样再升采样.降采样一般用池化层,升采样有各种“Unpooling”.“Transpose Convolution”(文献中也叫“Upconvolution”之类的其他名字). 这个问题的训练数据的获得非常昂贵,因为需要一个像素一个像素的贴标签. 2. Classification + Localizatoin 一般用同一个网络,一方面得出分类,一方面得出Bounding box的位置和大小. 3…
本文使根据CS231n的讲义整理而成(http://cs231n.github.io/python-numpy-tutorial/),以下内容基于Python3. 1. 基本数据类型:可以用 print(type(x)) 查看类型 1)整数.浮点数: 幂:x**y等价于pow(x, y): 不支持 x++.x--,支持 x+=1: /是浮点除法,//是整除,3//2 = 1: %取余: 2)布尔: 与(and,&).或(or,|).非(not),不要使用&&.||之类的. 3)字符…
1. 非监督学习 监督学习有数据有标签,目的是学习数据和标签之间的映射关系.而无监督学习只有数据,没有标签,目的是学习数据额隐藏结构. 2. 生成模型(Generative Models) 已知训练数据,根据训练数据的分布(distribution)生成新的样例. 无监督学习中的一个核心问题是估计分布. 3. PixelRNN 和 PixelCNN 依次根据已知的像素估计下一个像素. PixelRNN(van der Oord et al. NIPS 2016):利用RNN(LSTM)从角落开始…
1. 优化: 1.1 随机梯度下降法(Stochasitc Gradient Decent, SGD)的问题: 1)对于condition number(Hessian矩阵最大和最小的奇异值的比值)很大的loss function,一个方向梯度变化明显,另一个方向梯度变化很缓慢,SGD在优化过程中会震荡着下降,导致优化很慢.深度学习的网络会有上百万甚至更多的参数需要优化,在这个上百万维的空间里,更容易出现各个维度梯度变化差别很大的问题. 2)陷落在局部最小点或者鞍点(saddle point).…
本文使根据CS231n的讲义整理而成(http://cs231n.github.io/python-numpy-tutorial/),以下内容基于Python3. 1. 基本数据类型:可以用 print(type(x)) 查看类型 1)整数.浮点数: 幂:x**y等价于pow(x, y): 不支持 x++.x--,支持 x+=1: /是浮点除法,//是整除,3//2 = 1: %取余: 2)布尔: 与(and,&).或(or,|).非(not),不要使用&&.||之类的. 3)字符…
(没太听明白,以后再听) 1. 如何欺骗神经网络? 这部分研究最开始是想探究神经网络到底是如何工作的.结果人们意外的发现,可以只改变原图一点点,人眼根本看不出变化,但是神经网络会给出完全不同的答案.比如下图,左边的熊猫被识别成熊猫,但是加上中间的小“噪音”一样的数值,右图的熊猫就识别不出来了.而且这个小“噪音”不是随机的,它更像是offset,是某种系统误差,叠加到图片上去,总是可以欺骗神经网络. 2. 神经网络从权重到输出的映射是非线性的,非常复杂,非常难优化.训练.但是从输入到输出的映射可以…
讲课嘉宾是Song Han,个人主页 Stanford:https://stanford.edu/~songhan/:MIT:https://mtlsites.mit.edu/songhan/. 1. 深度学习面临的问题: 1)模型越来越大,很难在移动端部署,也很难网络更新. 2)训练时间越来越长,限制了研究人员的产量. 3)耗能太多,硬件成本昂贵. 解决的方法:联合设计算法和硬件. 计算硬件可以分为通用和专用两大类.通用硬件又可以分为CPU和GPU.专用硬件可以分为(FPGA和ASIC,ASI…
(没太听明白,下次重新听) 1. 增强学习 有一个 Agent 和 Environment 交互.在 t 时刻,Agent 获知状态是 st,做出动作是 at:Environment 一方面给出 Reward 信号 rt,另一方面改变状态至 st+1:Agent 获得 rt 和 st+1.目标是 Agent 学习 st 到 at 的某种映射 π* 最大化累积的 Reward,∑γtrt,其中 γt 是折现系数(discount factor). 用Markov Decision Process描…
这一节课很零碎. 1. 神经网络到底在干嘛? 浅层的是具体的特征(比如边.角.色块等),高层的更抽象,最后的全连接层是把图片编码成一维向量然后和每一类标签作比较.如果直接把图片和标签做像素级的最近领域分类,误差很大,但是转成编码之后就准多了. 可以用PCA可视化最后一层的特征,深度学习领域更高阶的做法是用t-SNE(Van der Maaten and Hinton, "Visualizting Data using t-SNE", JMLR 2008). 可视化非线性函数的激活值也可…
(没太听明白,下次重新听一遍) 1. Recurrent Neural Networks…
1. CPU vs. GPU: CPU核心少(几个),更擅长串行任务.GPU有很多核心(几千个),每一个核都弱,有自己的内存(几个G),很适合并行任务.GPU最典型的应用是矩阵运算. GPU编程:1)CUDA,只能在英伟达:2)OpenCL类似CUDA,好处是可以跑在任何平台上,但相对慢一些.深度学习可以直接调用现成的库,不用自己写CUDA代码. 用cuDNN比不用快几倍. 深度学习的瓶颈可能不在GPU的运算,而在GPU和数据的通信上,解决办法是:1)把数据读入RAM:2)用SSD而不是HDD:…
1. 激活函数: 1)Sigmoid,σ(x)=1/(1+e-x).把输出压缩在(0,1)之间.几个问题:(a)x比较大或者比较小(比如10,-10),sigmoid的曲线很平缓,导数为0,在用链式法则的时候,后一层传回来的导数乘以sigmoid的导数也是0了,换句话说,对于sigmoid饱和的区域后一层的导数传不到前面去了.(b)输出永远为正,即下一层的输入永远为正,我们希望输入的均值为0.(c)exp还是稍微有点难计算. 2)tanh(x),输出压缩在[-1,+1]之间,比sigmoid的进…