关于 AI 开源项目(深度学习)我的一点批判性思考(偏见) - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
begeekmyfriend
V2EX    机器学习

关于 AI 开源项目(深度学习)我的一点批判性思考(偏见)

  •  
  •   begeekmyfriend 2018-08-25 08:12:01 +08:00 5998 次点击
    这是一个创建于 2603 天前的主题,其中的信息可能已经有所发展或是发生改变。
    本人深度学习一年级小白,语音合成方向。

    对 TensorFlow 的批判。

    当你发现最上层 API 达不到复现标准的时候,Tensorflow 的难用就体现出来你不得不把源码里整个 class 搬过来,改造它的方法以适配你的应用,然后你又必须面对设计模式的各种坑,各种运行不起来(比如一个变量,你以为它是个对象,其实它只是个方法,并未求值)。对软件工程不熟悉的开发人员极不友好。若不是谷歌强大的 AI 生态,以及围绕生态培养起来的全世界数百名开发高手,这种框架真的没啥竞争力可言首先,API 设计得太烂了,有时简直没法用,因为 API 根本不是严格以经典论文架构为导向而设计的;其次,过度依赖设计模式,对非软件出身的工程师不友好;最后调试困难,这点倒是难不倒我。最后个人忠告,注意力模型尽量不要用 AttentionWrapper,实践证明屎一样的 API。

    对 PyTorch 的批判。

    回过头批判 PyTorch。严格地讲不是对框架本身的批判,因为我没有深入基于 PyTorch 开发过。应用生态不是没有,但是跟 Tensorflow 实在没法比。以 Github 为例,一个中小型 AI 项目(复现经典论文为主),TF 项目的 issue 大概上百个,就算作者忙不过来,也有其他用户热心帮忙解答;而 PyTorch 项目能有二三十个 issue 就很不错了,我提了个 issue,近一个礼拜没人理我,作者跑路,用户冷淡,你让我一个人如何敢入坑?验证一下效果就是跑一整天啊,我可没这精力和耐心去开发调试,结果越来越不敢碰,以至于最终弃坑。PyTorch 生态毕竟还是要寄托于脸书,但脸书的 AI 产出跟谷歌相比还是差一个档次。至于国人的 MXNet ……算了,人生苦短,忘了它吧~

    项目入手选择。

    尽量选 issue 多的,这意味着参与的人多,人越多意味着质量越好。比如论文里的效果是理想值的话,个人开源项目复现到 60~70 分的一大堆,要想再提高 20 分就需要众多高手出谋划策,以及大批小白鼠反馈。这是集体智慧,我还没见过哪个高手单独能复现 90 分以上的。神经网络模型真是一门玄学。

    一点调参经验。

    当你的复现效果只有 60~70 分,还需要起码 20 分才理想,那几乎一定是架构出了问题,调参是解决不了的。反过来如果调参能够提升 20 分,那只能说明之前的参数设置是错的,这是一个 bug。而参数都是论文给出的,除非论文造假,否则参数 bug 的可能性几乎不存在。而高手往往是从架构设计中寻求突破的,建议你调参的都是平庸的方案。没错,我个人很少接受调参的建议,遇上瓶颈都是从 Github 上搬运高人的架构方案,节省了不少时间。
    30 条回复    2018-08-27 20:45:09 +08:00
    WildCat
        1
    WildCat  
       2018-08-25 08:17:29 +08:00 via iPhone   1
    tf 的吐槽真的是深得我心。一个人一个写法,而且毫无软件工程
    lhx2008
        2
    lhx2008  
       2018-08-25 08:39:01 +08:00 via Android
    还是 dl4j 简单易懂,不过功能少不少
    singerll
        3
    singerll  
       2018-08-25 08:43:25 +08:00 via Android
    python 各种版本各种库真的心累。
    q397064399
        4
    q397064399  
       2018-08-25 08:59:29 +08:00
    从中期来看,,所谓的 AI 人工智能 又要回落了, 这行本质上跟以前一样 并没有革命性的突破,居然还有人拿深度学习来炒币.. 币市纯粹大佬玩控的投机市场
    yangyaofei
        5
    yangyaofei  
       2018-08-25 09:47:47 +08:00
    说说 Attention 那个为啥不好用?最近还想看看那个的源码呢
    rpman
        6
    rpman  
       2018-08-25 10:16:08 +08:00 via iPhone
    deep learning 之所以是 cs 而不是 stat 的在做就是因为它很工程
    begeekmyfriend
        7
    begeekmyfriend  
    OP
       2018-08-25 10:16:10 +08:00
    @yangyaofei https://github.com/keithito/tacotron/issues/170#issuecomment-389766623
    说来话长,AttentionWrapper 简直是个 bug 设计。这些都是实践中总结对比出来的,可验证的。一下子我的训练数据少了很多,收敛也快了很多。
    begeekmyfriend
        8
    begeekmyfriend  
    OP
       2018-08-25 10:23:14 +08:00   1
    @yangyaofei 说得再详细一点,AttentionWrapper 内部本身封装了一个 decoder RNN,但论文里的 decoder RNN 是需要自己设计的,没法子只能 AttentionWrapper 外面再做一个 decoder,但是我们还需要把 decoder 的输出反馈到 encoder 端,形成闭环,但是 AttentionWrapper 阻止了这种灵活性,只能把反馈接到 decoder 的输入端。总之无法严格实现论文的架构,所以只能把整个 Attention 类拷过来,打散自己搭建。
    lihongjie0209
        9
    lihongjie0209  
       2018-08-25 10:26:14 +08:00
    其次,过度依赖设计模式,对非软件出身的工程师不友好;--- 黑人问号, 这是你的缺点还是框架的缺点?
    Weny
        10
    Weny  
       2018-08-25 10:35:19 +08:00 via iPhone
    “过度依赖设计模式,对非软件出身的工程师不友好” 楼主的确是你在搞笑了,现在工程能力很厉害的高中生都一抓一大把,一个 cs major 的学生居然吐槽这个。软件工程不应该是基础功吗?
    begeekmyfriend
        11
    begeekmyfriend  
    OP
       2018-08-25 10:40:28 +08:00
    @lihongjie0209 @Weny 第一、你们用过 Tensorflow 吗?第二、你们用过 TF 的 API 更深的地方吗?
    lihongjie0209
        12
    lihongjie0209  
       2018-08-25 10:55:29 +08:00
    @begeekmyfriend #11 懂点设计模式而已
    iBaoger
        13
    iBaoger  
       2018-08-25 10:57:54 +08:00 via Android
    老马,又见面了
    begeekmyfriend
        14
    begeekmyfriend  
    OP
       2018-08-25 11:02:53 +08:00
    @iBaoger 阁下是?
    Hzzone
        15
    Hzzone  
       2018-08-25 11:21:49 +08:00 via iPhone
    目前来说我用过的最人类的是 Caffe(笑
    iBaoger
        16
    iBaoger  
       2018-08-25 13:30:16 +08:00 via Android   1
    takato
        17
    takato  
       2018-08-25 13:40:12 +08:00
    研究这种事情么,本身就不能指望很多人跟你一起做的。。所以 pytorch 的 issule 少也是正常。。

    换句话讲,模型不用自己代码复现一遍,怎么知道自己的理解偏差在哪里呢?做一遍就知道很多很多问题。
    takato
        18
    takato  
       2018-08-25 13:41:07 +08:00
    tf 的 contrib 里,有一堆东西都是没什么人用过的,有些参数的设置也和论文有出入,真的还不如自己写。。。
    begeekmyfriend
        19
    begeekmyfriend  
    OP
       2018-08-25 13:42:22 +08:00
    @takato 就是因为 PyTorch 的那个项目(不是 PyTorch 本身)复现有瑕疵才问的,奈何作者跑路中
    begeekmyfriend
        20
    begeekmyfriend  
    OP
       2018-08-25 13:44:26 +08:00
    @takato 我使用了 TF 的一个高手魔改 API 版本终于复现了 state of the art,可见 TF 本身功能是没什么问题,但的确存在很多脑残设计。
    takato
        21
    takato  
       2018-08-25 13:44:39 +08:00
    @begeekmyfriend Pytorch 的用户群的确比较研究向。。跑路了去研究别的了也是正常的。23333。
    JeffKing
        22
    JeffKing  
       2018-08-25 14:04:34 +08:00 via iPhone
    难得碰见 tts 的同行啊
    xiaoshenke
        23
    xiaoshenke  
       2018-08-25 14:27:07 +08:00 via Android
    @lihongjie0209 自己啥都不懂就别说话憋着
    SorryChen
        24
    SorryChen  
       2018-08-25 14:52:05 +08:00 via iPhone
    cv 很多新论文第一方代码很多用 pytorch 了
    yangyaofei
        25
    yangyaofei  
       2018-08-25 18:14:50 +08:00 via Android
    @begeekmyfriend 这样啊……前几个月摆弄 seq2seq 时候也觉得每次加上 attention 就会有莫名的问题……在之前还觉得直接一个 wrapper 就搞定好强大…
    现在用 tensor2tensor 了,已经变成调包侠……
    frinstioAKL
        26
    frinstioAKL  
       2018-08-25 18:43:22 +08:00
    赞同楼主观点,python 的 tf 已经不是一个包了,简直就是向一门新的语言靠拢。很多文档是由代码注释自动生成的,然而写的跟屎一样,东缺西缺,用的时候经常得扒源码看。找个开源代码,简直一个人一个风格。现在已经习惯从底层 API 写一套自己的 wrapper 了,用高级 API 有的包装不好还经常变动。最难受的是很多隐藏的坑,很难发掘。比如 tf.image 插值里面 align_corners 默认为 false,而且实现的算法和主流的图像库都是不一样的; 好多函数偷偷建立了局部变量注释里面不写; 有些模块的 c++ 底层是有问题的,导致莫名其妙的性能损失等等。不过得赞叹的是,tf 真的是面向生产力环境的(和 pytorch 比起来,个人觉得)
    lichun
        27
    lichun  
       2018-08-25 18:55:37 +08:00   1
    https://github.com/keras-team/keras

    Deep Learning for humans
    Revenant
        28
    Revenant  
       2018-08-26 00:18:02 +08:00
    以前的 tf 的 API 真的难用,example 的代码写得风骚无比,理解难度很大
    尤其是 tf 还有改 API 名和代码的习惯...
    去年还碰到过一个坑,当时想看看 tf 的语音识别 example,到 github 中 down 下来后发现运行不了,审查代码半天发现原来 tf 只是声明了某个函数(应该是梅尔频谱的函数),但并没有实现,而这个 example 还写进了 tf 官方文档中
    northisland
        29
    northisland  
       2018-08-26 13:04:51 +08:00
    国人的 mxnet,你好白头鹰
    feiyuanqiu
        30
    feiyuanqiu  
       2018-08-27 20:45:09 +08:00
    @lhx2008 请教个问题,java 做人脸识别有什么比较好的库吗?现在用 python 的库,感觉又要学 python 一整套东西...
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3280 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 10:45 PVG 18:45 LAX 03:45 JFK 06:45
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86