经验拾忆纯手工-CNNRNNNg

前言看Andrew Ng视频,总结的学习心得。虽然本篇文章可能不是那么细致入微,甚至可能有了解偏差。但是,我喜欢用更直白的方式去理解知识。上一篇文章传送门: https://segmentfault.com/a/11... 端到端首先聊一个面试经历我最开始接触的是ML (但只限于Sklearn的简单应用,工程化的内容当时一点都不了解。)后来有幸了解到DL (这个了解比较多)我面的是普通Python岗, 因为我的小项目中涉及到 (聊天机器人)。所以第二个面试官揪着这个聊了聊。与面试官交谈时,我也直接挑明了,模型是Github找的,当时自己爬了些问答对,处理后放入模型自己训练的。面试官一顿(特征提取,语义)等各种 ML-NLP工程化的过程,把我直接问懵了。。 怎么提取特征(问号脸,难道是TF-IDF,分词之类的??)?????我也不知道说啥,以仅有的能力,和他聊聊(LSTM、Embedding, Seq2Seq的 Encoder-Vector-Decoder)。。 面试官说:“你说了这些, 那你特征工程是怎么做的???”我感觉已经没有任何反驳的能力了。。。接下来的事情,我不说,大家也应该清楚了。 反思我回来后也反思过, 做了什么特征工程?? 我看视频中 也是,数据简单预处理下,然后分词,词频过滤,构建词典然后,直接就是构建NN层(包括Embedding层)。 直到最后了解了"端到端这个概念" 与 传统ML的区别。才清楚, 当时面试的场景是怎么个情况。。。 正式开篇端到端传统ML: 原数据 -> 数据特征工程(各种复杂的人工处理) ---> 模型端到端DL:原数据 -----------------------------------------------------> 模型 端到端:(一步到位): 传统的ML做的中间层人工"手动"特征工程处理出来的特征。 这些特征,端到端的NN都可能"自动学习"的到。 这也可能是当时为什么面试官一直追问我"特征如何处理"的原因吧。也肯能他另有目的QAQ...或者我们真的不在一个频道上。。。但是交流的过程真的使我受益匪浅,有了更广阔的视野(3Q!)强调一点: 虽然端到端 模型很便捷。但是需要大量的数据,才能训练出好的效果。CNN (卷积神经网络)构成卷积层(激活函数) + 池化层 + 全连接层Convolution + Pooling + Dense至于一些术语:有人喜欢把: 卷积层 + 池化层 作为一层网络 (因为池化层无训练训练,后面会提到)也有人喜欢把: 卷积层 和 池化层 各自单独算一个层(也是没问题的。Tensorflow的API就是这样设计的)卷积层(Convolution Layer)卷积过程卷积计算过程就不说了。没有案例图。但你可以理解为: 两个 正方体 的 对应位置的元素 (相乘再相加)的结果。。。 (互相关,,,)卷积的输出计算输出图像大小计算公式: h图片输出 = (h图片输入 - h卷积核 + 2padding) / strides + 1w图片输出 = (w图片输入 - w卷积核 + 2padding) / strides + 1首先声明: 这个式子由于不一定能够整除, 因此除不尽的情况下,向下取整, 也叫地板除因为有个原则: 卷积核滑动的时候(通常是,步长>1的情况下) 如果越界了一部分。则舍弃掉根据上面的公式,求一个输出图像大小的例子(此处,不做paddding, 并且步长为1) ...

October 9, 2019 · 7 min · jiezi

经验拾忆纯手工-DeepLearningMetricsNg

前言看Andrew Ng视频,总结的学习心得。虽然本篇文章可能不是那么细致入微,甚至可能有了解偏差。但是,我喜欢用更直白的方式去理解知识。 数据划分传统机器学习数据的划分传统机器学习一般都是小规模数据(几万条) 那么可以 训练集:验证集:测试集 = 6:2:2若是大规模深度学习一般都是大规模数据(几百万条) 训练集: 验证机:测试集 = 9:0.5:0.5划分 验证集 可以过早的为我们预测 指标和精度 偏差 与 方差高偏差: 训练集和测试集 loss 都比较高 (比人预测的loss高很多) (欠拟合)高方差: 训练集Loss低, 测试集 Loss高。 所以训练集和测试集 loss相差太大, 也成为(过拟合) 防止过拟合的几种方法损失函数 (惩罚项系数) 正则化(regularization)可分两种 (L1正则化惩罚 和 L2正则化惩罚)下面只以 L2为例,L2用的也是比较多的)正则化系数公式: loss = ...new_loss = loss + (/2m) * w^2w = w - learning_rate * 梯度上面公式的单调变换解释: 求梯度的时候 越大, new_loss越大, 求得的梯度越大(正比)w 减去的值就越大。 w变得就越小。w 越小, 一定程度上特征就衰减了许多。 就有效的放置了过拟合哦对应API(有两种方式): L1 = keras.regularizers.l2(0.01) # TF2 当作 keras 的 Layers定义来使用L1 = tf.nn.l2_loss(w_b) # 看到里面传递 w和b了吧, 这种是偏手动方式实现的API如果你想使用手撕实现,下面有个例子(伪代码): ...

October 3, 2019 · 4 min · jiezi

论文笔记之Fashion-Analysis系列一

Explainable Fashion Recommendation: A Semantic Attribute Region Guided Approach, In IJCAI,2019.1. 简介本文主要是提出了一种基于语义属性的可解释个性化服装推荐模型,即根据用户的喜好推荐服装,并从服装语义属性(袖长,领口等属性)的角度对推荐结果给出合理的解释。本文的motivation是:用户往往会有一些对服装属性的偏好,如下图展示了两个用户的购买记录,第一个用户明显倾向于购买有V领的衣服,第二个用户倾向于购买鞋头比较尖以及鞋跟比较高的鞋。 2. 挑战由于许多大规模的电商数据缺少细粒度的服装属性标注,所以服装属性的语义特征表示难以学习;用户的偏好比较复杂,传统的方法是将服装图片映射成一个特征表示去建模,这难以生成可解释性的推荐。3. 方法为了解决以上两个挑战,文中提出了一种基于与语义属性的可解释系统(Semantic Attribute Explainable Recommender System,SAERS)。该系统包含两部分,第一部分是语义提取网络(Semantic Extraction Network, SEN), 它利用无监督的方式定位属性相关区域并进一步提取特征;第二部分是基于注意力机制的细粒度偏好建模机制(Fine-grained Preferences Attention,FPA),该模块主要是匹配用户的偏好和细粒度的服装属性;最后利用贝叶斯个性化排序(Bayesian Personalized Rank, BPR)算法来进行优化 (由于文本的实验室将用户购买记录中的上品作为正例,其余没购买的商品作为负例,因此相当于利用了隐反馈,所以采用BPR进行建模)。 模型框架图: 1). 语义提取网络:利用了两个附属数据集训练,通过属性分类和grad-AAM (AAM的改进版)的思想来生成属性激活图(Attribute Activation Map, AAM),并通过对AAM进行简单的阈值操作定位与属性最相关的区域(这里只考虑属性分类结果概率最大的属性值),然后利用得到的相关区域对最后一层卷积层得到的特征图进行ROI pooling(其实就是只对特征图中相关区域的激活值进行全局平均池化),最后提取出属性的特征表示。 2)

July 4, 2019 · 1 min · jiezi

windows10下,零基础学习VUE(5)-- 小练习,搭建页面实现利用resnet50,识别imagenet中1000类图像

!!!!等待编辑中,先写个大纲简单看下结果使用 el-upload上传组件使用el-progress进度条使用v-for显示元素一些基本的css格式后台日志效果图.]

April 10, 2019 · 1 min · jiezi

知识蒸馏for语义分割

Structured Knowledge Distillation for Semantic Segmentation2019/03/13 Author:Yu ZHang2019cvpr中的一篇文章,是我见到的第一个在分割上使用知识蒸馏的,可见实时的分割已经是现在研究的热门了,作者做的事情就是:用PSPNet或OCNet等作为老师网络,来指导学生网络,如最近看的ESPNet,MobileNet,ShuffleNet等,让这些小的网络拥有更高的准确率。下图是整个蒸馏的过程:整个蒸馏分为三个部分:1)Pixle-wise distillation 2)Pair-wise distillation 3)Holistic distillationPair-wise distillation首先教师网络是不进行优化的,其是已经训好的且好使的分割网络。按先后顺序来说我们先讲Pair-wise distillation,这一个部分作者是受马尔科夫随机场(条件随机场)的启发,作者想要找两两像素之间的相关性以提高网络的效果。At表示教师网络特征图第i个像素与第j个像素之间的相关性,As表示学生网络ij之间相关性,通过下式(平方差)来计算蒸馏loss,让学生网络逼近教师网络:而计算两点之间相似性公式如下:Pixel-wise distillation这个蒸馏模块就是正常蒸馏的思路,我们把教师网络输出的概率拿过来,与学生网络输出的概率做loss,让学生网络逼近教师网络,在图中直观的看就是两个分割图做loss,但其实是概率做loss,loss公式如下:Holistic distillation这里作者利用了GAN的思想,学生网络被看作是为生成器,其输入就是数据集中的RGB图像,输出的是分割图(fake),而教师网络输出的分割图为真实图,分割图与RGB图送入Discriminator net做一个嵌入,这个网络相当于GAN中的判别器会输出一个得分,得分表示RGB与分割图是否匹配,真实分布与错误分布之间计算Wasserstein距离。最终共有4个loss(还有一个loss是学生网络输出与真实label做普通的loss),最终loss公式如下:采用此蒸馏方法,作者将许多小网络的准确率都提升了非常多,实验结果如下图:

March 13, 2019 · 1 min · jiezi

Decoders Matter for Semantic Segmentation

Decoders Matter for Semantic Segmentation:Data-Dependent Decoding Enables Flexible Feature Aggregation2019/03/12 Author:Yu Zhang此篇论文被CVPR2019收录,由标题可知:在语义分割中decoder过程同样重要,那么在decoder当中最重要的是什么呢?没错就是上采样upsample。本文做的事情,最主要的就是提出了一种叫做DUpsampling的上采样操作,作者认为目前分割网络普遍采用的双线性插值并不是最优的上采样方法,于是探寻一种可以让粗糙的卷积网络输出更准确地向上采样的方法。在提出此上采样方法的同时也提出整个分割网络,在VOC数据集上达到了SOTA效果。DUpsampling过程如下图:输出的特征图每个点,与CxN的矩阵W进行矩阵相乘,得到1xN这个向量,再将这1xN的向量reshape为2x2xN/4,就相当于把图上采样为原来的两倍。那么关键就在于这个矩阵W,是怎么得到的呢?作者认为分割的label图像并不是独立同分布的,其存在结构信息,所以label Y可以几乎没有损失地进行压缩,或者说降维。于是作者就想一般的网络都是将特征图上采样到label大小再做loss,我们可不可以将labelY进行压缩,然后用原本特征图直接与其计算loss呢。

March 13, 2019 · 1 min · jiezi

ESPNet

ESPNet: Efficient Spatial Pyramid of Dilated Convolutions for Semantic Segme2019/03/11 Author:Yu Zhang此篇论文为ECCV2018中的一篇论文,作者介绍了一个既快又效果说得过去的网络架构,用于语义分割当中。此网络可以达到每秒112帧,比目前有效的轻型网络如MobileNet,ShuffleNet, ENet等等都要快,还好,在只降低8%精度的条件下,比PSPNet小180倍,速度快22倍。那么作者是怎么做到的呢?上图为ESP的架构,看起来非常复杂,但其实操作很简单,首先使用逐点卷积将通道数进行缩减,缩减后送入空洞卷积金字塔,通过不同rate的空洞卷积获得更大感受野并进行融合,参数非常少。具体通道及rate以及拼合策略如图所示。拼合策略与普通空洞卷积特征融合的方法不同,这里为了避免gridding artifacts现象,采用了逐级相加的策略。设计的分割网络如下图:设计了一个轻量级的编码解码网络架构在cityscapes测试集上能达到60.3的准确率,已经不错了。 同时作者做了特别多的实验,感兴趣的可以到原文中去看。

March 11, 2019 · 1 min · jiezi

MobileNetV2 + ShuffleNetV2

Author:Yu Zhang2019.03.04MobileNetV2ShuffleNetV2漂移卷积实验跑完了,IoU只有66%,降了7个百分点,下面把漂移去掉换成普通卷积,再对比看一下,如果有一点提升,那么在之后论文中也可以用到。感觉今天没看到啥。。发现的两个弱监督论文都没有期望中的好,有点僵住了。MobileNetV2这篇文章看得我云里雾里的,因为作者在Linear BottleNeck这一核心思想部分讨论得非常深,水平所限我就不阐述其中道理了,我们来看一下结构。深度可分离卷积我就不过多赘述了,在channel及空间上分别进行卷积,减少了计算量。下图为MobileNetV2提出的bottleneck结构:其整个网络细节如下图,用在分割时可以只用前面的几层作为特征提取,因为它缩小的倍数太多了,没必要。可以看到通道数非常少,这样的网络会很快。mobilenetV2 代码:mobilenetv2ShuffleNetV2ShuffleNetV2列出了四点轻型网络要遵循的原则,并依据这四个原则,提出了改进思路,改变了原本的shufflenet。其中四点原则为:1)相同通道宽度可以最小化内存访问成本MAC2)过多的组卷积会增加内存访问成本MAC3)网络内部碎片操作会降低并行度4)元素计算操作不容忽视,元素计算操作也会有很高的的MAC作者分析了不足,改进了shufflenet至shufflenetv2如下图,具体细节就不多说了,看图都懂:整个网络的架构:

March 4, 2019 · 1 min · jiezi

AutoML:自动设计自动驾驶机器学习模型

译者说本人介绍了谷歌自动驾驶子公司Waymo在AutoML领域的研究成果。自动驾驶对神经网络模型的准确性和延迟要求,这要求工程师手动调优不同的神经网络架构,这不仅花费了大量的时间,而且能够调优的数量是有限的。因此,Waymo和Google AI的研究员合作,自动生成神经网络架构并训练评估,即AutoML,以便节约时间并寻找最佳模型。本文介绍了他们的初步研究成果,从取得的进展来看,未来可期。正文By: Shuyang Cheng and Gabriel Bender在Waymo,机器学习几乎在我们自动驾驶系统的每个模块都起着关键作用。它可以帮助我们的汽车看清周围的环境、感知世界、预测其他人的行为,并决定自己下一步最佳移动。采取感知:我们的系统组合多个神经网络,使车辆能够解释传感器数据以识别物体,并随着时间的推移跟踪它们,以便车辆能够深入理解周围的世界。创建这些神经网络通常是一项耗时的任务; 我们要优化神经网络架构,以使网络的质量和速度满足在自动驾驶汽车上运行,这是一个复杂的微调过程,一项新任务的调优通常花费工程师数月时间。现在,我们与Brain团队的Google AI研究员合作,将前沿研究付诸实践来自动生成神经网络。更重要的是,这些自动生成的神经网络比工程师手动调优的网络具有更高的质量和更快的速度。为了把我们的自动驾驶技术带到不同的城市和环境,我们需要以极快的速度优化我们的模型以适应不同的场景。AutoML让我们做到这一点,它提供了大量的有效且持续的ML解决方案。迁移学习:使用现有的AutoML架构我们的合作始于一个简单的问题:AutoML能否为汽车生成高质量和低延迟的神经网络?质量衡量神经网络的准确性。延迟衡量神经网络的速度,它也称为推理时间。由于驾驶是一项需要车辆实时反馈、系统足够安全的关键活动,因此我们的神经网络需要低延迟运行。我们大部分直接运行在车辆上的神经网络提供结果的延迟小于10ms,这比在数据中心数千台服务器上运行的许多神经网络快。在他们的初版AutoML论文中,我们的Google AI同事能够自动探索超过12000种架构来解决经典的CIFAR-10图像识别任务:将小图像识别为十个类别中的一个,例如汽车、飞机、狗等。在一篇后续文章中,他们发现了一组神经网络构建模块,称之为NAS单元,对于CIFAR-10和类似的任务,NAS单元自动构建的神经网路比手工调优的要好。通过这次合作,我们的研究人员决定使用这些单元自动构建针对自动驾驶任务的新模型,从而将在CIFAR-10上学到的知识迁移到自动驾驶领域。我们的第一个实验是语义分割任务:将LiDAR点云中的每个点标识为汽车、行人、树等。One example of a NAS cell. This cell processes inputs from the two previous layers in a neural net.为此,我们的研究员编写了一个自动搜索算法,在卷积网络架构(CNN)中探索数百种不同的NAS单元组合,训练和评估我们的LiDAR分割任务模型。当我们的工程师手工微调这些神经网络时,他们只能探索有限数量的架构,但通过这种方法,我们自动探索了数百个架构。我们发现新的模型在以下两方面优于以前手工调优的模型:质量相似,但延迟显着降低。延迟相似,但质量更高。鉴于初步尝试取得的成功,我们将相同的搜索算法应用于两个与交通车道的检测和定位相关的附加任务。迁移学习技术也适用于这些任务,并且我们能够在汽车上部署三个新训练和改进的神经网络。端到端搜索:从头开始的新搜索架构我们受到这些初步结果的鼓舞,因此决定寻找可以提供更好结果和更广泛应用的全新架构。通过无限制组合已发现的NAS单元,我们可以更直接地寻找满足严格的延迟要求的架构。进行端到端搜索通常需要手动探索数千种架构,会带来大量的计算成本。探索单一架构需要在具有多个GPU的数据中心计算机上进行数天的训练,这意味着单个任务找到理想的架构需要数千天的计算。因此我们设计了一个代理任务:缩小的LiDAR分割任务,可以在几小时内完成训练。团队必须克服的一个挑战是找到一个类似于我们原始分割任务的代理任务。在我们能够确定新任务架构的质量与原始任务中架构的质量之间的关联之前,我们尝试设计了几个代理任务。然后,我们启动了类似于初版AutoML论文中的搜索算法,但现在用在代理任务上进行搜索:代理端到端搜索。这是该概念首次应用于LiDAR数据。Proxy end-to-end search: Explore thousands of architecture on a scaled-down proxy task, apply the 100 best ones to the original task, validate and deploy the best of the best architectures on the car.我们使用了几种搜索算法来优化质量和延迟,因为这对车辆至关重要。我们查看不同类型的CNN架构并使用不同的搜索策略,例如随机搜索和强化学习,我们为代理任务探索10000多种不同的架构。通过使用代理任务,原来在Google TPU集群上需要一年多计算时间的任务现在只需要两周时间。我们刚开始迁移NAS单元时就发现了比以前更好的神经网络:延迟降低20-30%,质量相同。质量更高,错误率降低8-10%,与之前的架构具有相同的延迟。1) The first graph shows about 4,000 architectures discovered with a random search on a simple set of architectures. Each point is an architecture that was trained and evaluated. The solid line marks the best architectures at different inference time constraints. The red dot shows the latency and performance of the net built with transfer learning. In this random search, the nets were not as good as the one from transfer learning. 2) In the second graph, the yellow and blue points show the results of two other search algorithms. The yellow one was a random search on a refined set of architectures. The blue one used reinforcement learning as in [1] and explored more than 6,000 architectures. It yielded the best results. These two additional searches found nets that were significantly better than the net from transfer learning.搜索中发现的一些网络架构显示了卷积、池化和反卷积操作的创造性组合,如下图所示。这些架构最终适用于我们最初的LiDAR分割任务,并将部署在Waymo的自动驾驶车辆上。One of the neural net architectures discovered by the proxy end-to-end search.下一步呢?我们的AutoML实验只是一个开始。对于我们的LiDAR分割任务,迁移学习和代理端到端搜索都提供了比手工调优更好的神经网络。我们现在有机会将这些机制应用于新类型的任务,这可以改善许多神经网络。这一发展为我们未来的ML工作开辟了新的令人兴奋的途径,并将改善我们自动驾驶技术的性能和能力。我们期待与Google AI进一步工作,敬请期待!致谢Waymo和Google之间的合作由Waymo的Matthieu Devin和Google的Quoc Le发起和赞助。这项工作由Waymo的Shuyang Cheng和Google的Gabriel Bender以及Pieter-jan Kindermans执行。特别感谢Vishy Tirumalashetty的支持。Members of the Waymo and Google teams (from left): Gabriel Bender, Shuyang Cheng, Matthieu Devin, and Quoc Le说明翻译:@AdolphLWQ项目地址tt:自动生成翻译模板用时: 2.5h(人机混合)2019翻译任务:3/52参考文献Barret Zoph and Quoc V. Le. Neural architecture search with reinforcement learning. ICLR, 2017.Barret Zoph, Vijay Vasudevan, Jonathon Shlens, Quoc V. Le, Learning Transferable Architectures for Scalable Image Recognition. CVPR, 2018. ...

January 25, 2019 · 2 min · jiezi