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

2018-08-25 08:12:01 +08:00
 begeekmyfriend
本人深度学习一年级小白,语音合成方向。

对 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 上搬运高人的架构方案,节省了不少时间。
5735 次点击
所在节点    机器学习
30 条回复
takato
2018-08-25 13:44:39 +08:00
@begeekmyfriend Pytorch 的用户群的确比较研究向。。跑路了去研究别的了也是正常的。23333。
JeffKing
2018-08-25 14:04:34 +08:00
难得碰见 tts 的同行啊
xiaoshenke
2018-08-25 14:27:07 +08:00
@lihongjie0209 自己啥都不懂就别说话憋着
SorryChen
2018-08-25 14:52:05 +08:00
cv 很多新论文第一方代码很多用 pytorch 了
yangyaofei
2018-08-25 18:14:50 +08:00
@begeekmyfriend 这样啊……前几个月摆弄 seq2seq 时候也觉得每次加上 attention 就会有莫名的问题……在之前还觉得直接一个 wrapper 就搞定好强大…
现在用 tensor2tensor 了,已经变成调包侠……
frinstioAKL
2018-08-25 18:43:22 +08:00
赞同楼主观点,python 的 tf 已经不是一个包了,简直就是向一门新的语言靠拢。很多文档是由代码注释自动生成的,然而写的跟屎一样,东缺西缺,用的时候经常得扒源码看。找个开源代码,简直一个人一个风格。现在已经习惯从底层 API 写一套自己的 wrapper 了,用高级 API 有的包装不好还经常变动。最难受的是很多隐藏的坑,很难发掘。比如 tf.image 插值里面 align_corners 默认为 false,而且实现的算法和主流的图像库都是不一样的; 好多函数偷偷建立了局部变量注释里面不写; 有些模块的 c++ 底层是有问题的,导致莫名其妙的性能损失等等。不过得赞叹的是,tf 真的是面向生产力环境的(和 pytorch 比起来,个人觉得)
lichun
2018-08-25 18:55:37 +08:00
https://github.com/keras-team/keras

Deep Learning for humans
Revenant
2018-08-26 00:18:02 +08:00
以前的 tf 的 API 真的难用,example 的代码写得风骚无比,理解难度很大
尤其是 tf 还有改 API 名和代码的习惯...
去年还碰到过一个坑,当时想看看 tf 的语音识别 example,到 github 中 down 下来后发现运行不了,审查代码半天发现原来 tf 只是声明了某个函数(应该是梅尔频谱的函数),但并没有实现,而这个 example 还写进了 tf 官方文档中
northisland
2018-08-26 13:04:51 +08:00
国人的 mxnet,你好白头鹰
feiyuanqiu
2018-08-27 20:45:09 +08:00
@lhx2008 请教个问题,java 做人脸识别有什么比较好的库吗?现在用 python 的库,感觉又要学 python 一整套东西...

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://tanronggui.xyz/t/483047

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX