文章来源:https://www.toutiao.com/i6539751003690893828/?tt_from=weixin_moments&utm_campaign=client_share&from=timeline&timestamp=1522668580&app=news_article_lite&utm_source=weixin_moments&isappinstalled=0&iid=29516333526&utm_medium=toutiao_android&wxshare_count=2&pbid=6622050729162491406

英文原文:http://tinyclouds.org/residency/

“超分辨率”问题:用条件型生成对抗网络(conditional GAN)来解决这个问题,但经过几次失败

换成了另一种有望解决该问题的新型生产式模型——PixelCNN:降低了输出图像的尺寸并使用脸部或卧室类的小型数据集

但PixelCNN却对过时的梯度极其敏感,这就导致了通过增加硬件的数量来使用异步随机梯度下降算法所带来收益微乎其微。

但同步随机梯度下降算法也有自己的问题:首先,它需要大量的机器经常进行同步,这就无可避免的会导致停机时间的增加;其次,除非将每台机器的批尺寸设为1,否则它无法通过增加机器的数量来增加每秒训练的次数。最终,我发现对我而言最简单有效的设置是用一台8GPU的机器使用同步随机梯度下降算法进行训练,即便如此每次训练仍需花上数天的时间。

拥有大量计算能力的另一好处是可以对超参数的优化进行大规模的暴力搜索。

另一个难题是如何量化评估结果。最后,我们把这项任务交给了大众——询问参与调查的人哪些图像看上去更真实,这才证明了我们模型的价值。

失败与未报告的实验结果:

大数的素因数分解:Mohammad和我尝试过两种方法:他修改了Google机器翻译的seq2seq模型,该模型把一个半素大数的整数序列作为输入,并以预测其素因数中的一个做为输出;我则使用一个较为简单的模型,它将定长整数作为输入,并用几个全连接层来预测输入的分类:素数或合数。但这两种方法最后都只学到了最为明显的规律(如果尾数为0,那它就不是素数!)

给出一张噪点图片并让它使用梯度自我更新来生成图像(也称为deep dreaming),训练的目标是令该网络把“真实”类别的输出达到最大化。该模型通过交替生成“假”实例来进行训练,跟典型的GAN中的鉴别器一样。这个模型在MNIST数据集上的确输出了不错的结果,但我没法在CIFAR-10 数据集上达到同样的效果,并且它的实用性也极为有限。

很多模型都不适用于异步随机梯度下降算法。最近,一篇名为DCASGD的论文提出了一种解决过时梯度问题的可能方法——在每一个线程更新自己的权重时使用差分向量。不幸的是,我没能在TensorFlow上复原他们的结果,也就无法尝试我基于此方法的几个设想,可能还是哪里有Bug。

思考,结论:

不过,我确实发现,这一模型的构建、训练和调试都相当困难。当然,大部分的困难是由于我缺乏经验,这也表明有效训练这些模型是需要相当丰富的经验的。我的工作集中在机器学习最为容易的分支上:监督式学习。但即便有着完美的标记数据,开发模型可能仍然十分困难。

一般情况就是预测的维度越大,构建模型所花的时间就越长(例如:花大把的时间进行编程、调试和训练)。基于我的经验,建议所有人在开始时都尽可能的简化和限制你的预测范围。举一个我们在着色实验中的例子:我们在开始时试图让模型预测整个RGB图像,而非只去预测颜色通道。

如果我用“工作”这一词的直观意义来描述软件的话,那么图像分类任务似乎“工作”的很稳健;生成式模型几乎很少能“工作”,人们也不太了解这种模型,GAN能输出高质量图像,但同时却极难构建起来。我的经验是,对GAN的架构作出任何小改动都有可能使它完全无法工作。我听说强化学习与其相比更加困难,但因经验不足,在此就不作评价了。

另一方面,随机梯度下降算法的性能十分强大,即使是严重的数学错误,可能也只是会使结果有一些失真,而不至于产生严重的偏差。

并行化(Parallelization)能带来的好处很有限。增加计算机数量使大规模的超参数搜索会变得更加容易,但理想情况下,我们会设计不用特别仔细调试也能很好运转的模型。

不好的是,对于很多模型而言,异步随机梯度下降算法并没有什么用处——更加精确的梯度通常用处不大。这就是为什么 DCASGD 的研究方向很重要的原因。

论文中的信噪比很低。但是还有很大的改进空间。人们通常不会坦率承认他们模型的失败之处,因为学术会议更看重的是准确度而不是透明度。我希望学术会议能接受提交博客文章,并要求开源实现,Distill在这方面的努力值得称赞。

《我在谷歌大脑见习机器学习的一年:Node.js创始人的尝试笔记》阅读笔记的更多相关文章

  1. 阅读《RobHess的SIFT源码分析:综述》笔记

    今天总算是机缘巧合的找到了照样一篇纲要性质的文章. 如是能早一些找到就好了.不过“在你认为为时已晚的时候,其实还为时未晚”倒是也能聊以自慰,不过不能经常这样迷惑自己,毕竟我需要开始跑了! 就照着这个大 ...

  2. RobHess的SIFT源码分析:imgfeatures.h和imgfeatures.c文件

    SIFT源码分析系列文章的索引在这里:RobHess的SIFT源码分析:综述 imgfeatures.h中有SIFT特征点结构struct feature的定义,除此之外还有一些特征点的导入导出以及特 ...

  3. RobHess的SIFT源码分析:综述

    最初的目的是想做全景图像拼接,一开始找了OpenCV中自带的全景拼接的样例,用的是Stitcher类,可以很方便的实现全景拼接,而且效果很好,但是不利于做深入研究. 使用OpenCV中自带的Stitc ...

  4. 阅读《RobHess的SIFT源码分析:综述》笔记2

    今天开始磕代码部分. part1: 1. sift特征提取. img1_Feat = cvCloneImage(img1);//复制图1,深拷贝,用来画特征点 img2_Feat = cvCloneI ...

  5. element-ui button组件 radio组件源码分析整理笔记(一)

    Button组件 button.vue <template> <button class="el-button" @click="handleClick ...

  6. element-ui 组件源码分析整理笔记目录

    element-ui button组件 radio组件源码分析整理笔记(一) element-ui switch组件源码分析整理笔记(二) element-ui inputNumber.Card .B ...

  7. element-ui Carousel 走马灯源码分析整理笔记(十一)

    Carousel 走马灯源码分析整理笔记,这篇写的不详细,后面有空补充 main.vue <template> <!--走马灯的最外层包裹div--> <div clas ...

  8. STL源码分析读书笔记--第二章--空间配置器(allocator)

    声明:侯捷先生的STL源码剖析第二章个人感觉讲得蛮乱的,而且跟第三章有关,建议看完第三章再看第二章,网上有人上传了一篇读书笔记,觉得这个读书笔记的内容和编排还不错,我的这篇总结基本就延续了该读书笔记的 ...

  9. element-ui MessageBox组件源码分析整理笔记(十二)

    MessageBox组件源码,有添加部分注释 main.vue <template> <transition name="msgbox-fade"> < ...

  10. element-ui switch组件源码分析整理笔记(二)

    源码如下: <template> <div class="el-switch" :class="{ 'is-disabled': switchDisab ...

随机推荐

  1. 构建一个在线ASCII视频流服务

    构建一个在线ASCII视频流服务 2018-03-26  正常的文章 1685 什么是ASCII视频流服务? 其实这个名字是咱胡乱起的,具体叫啥我也不清楚,但效果如下: 大家可以在自己的命令行里试下, ...

  2. 树莓派研究笔记(1)-- 安装Mono

    职业病啊,原谅我,第一步就是要安装Mono搞DOTNET 1. 更新系统 sudo apt-get update 2. 安装 Mono sudo apt-get install mono-comple ...

  3. java代理模式实例讲解

    下面这个是设计模式课上的例子: import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import ...

  4. Arcgis android 10.2安装方法

    请仔细对照博文做!!! 将arcgis android 10.2的压缩包解压 arcgis android 10.2下载地址http://pan.baidu.com/s/1sj2LKO9 Help-& ...

  5. 微信创建带参数二维码,并加上logo

    现在需要创建一个场景二维码,除了基础的微信接口创建外,需要加上小logo,思路如下: 1. 首先根据微信的开发文档创建二维码,获取二维码的url,没啥可说的,按照文档来就好了 获取到的二维码就是这么素 ...

  6. 如何使用Visual Studio 2010在数据库中生成随机测试数据

    测试在项目中是很重要的一个环节,在Visual Studio 2010中,在测试方面已经有很好的支持了,比如有单元测试,负载测试等等.在数据测试的方面,Visual Studio 2010,还支持对数 ...

  7. 根据GridView模板里的列名获取列索引

    以前Insus.NET在写过一篇<在Gridview控件中根据Field Name来取得对应列索引> http://www.cnblogs.com/insus/archive/2010/0 ...

  8. AngularJS(五)——filter(过滤器)

    前言 过滤器可以用一个管道字符(|)添加到表达式和指令中.比如做ITOO的时候或者其他项目的时候,总是想统一货币日期等显示,以前的做法,不断循环该控件或该标签,然后循环转换.如果利用AngularJS ...

  9. Internet路由-主机路由表和转发表

    1.路由表 路由信息最终要存储在用于路由器的主机或者专业路由器上,存放这些信息的地方称为路由表.其中包含三元素:目标地址,掩码,下一跳. 1.1.查询路由表的开销 有人认为查询路由表是一件和交换机查询 ...

  10. wamp配置apache虚拟主机支持多域名访问localhost

    1.背景: 在进行网站开发的时候,通常需要以http://localhost或者127.0.0.1等地址来访问本地环境的网站.不过随着开发项目的增多,需要每次先访问localhost然后再选项目,显得 ...