机器学习现在很火, 但有个疑问: 这跟普通程序员有多大关系? 或者说我们的价值在哪里

2017-01-27 04:16:24 +08:00
 eyp82

机器学习的算法, 基本就那几大类, 都是根据各种教授研究员们的论文出来的, 各种库也有了, 我们非科研人员能做的就是利用现有的深度学习 /机器学习的库给的 API, 拿一批种子数据训练一下, 然后拿另一批数据验证, 调一下参数. 然后呢? 普通程序员 /架构师在这方面的价值在哪里?

还请给专家指点.

17025 次点击
所在节点    程序员
47 条回复
q397064399
2017-01-27 05:09:19 +08:00
你有听说一种职业 叫做 调参狗
snnn
2017-01-27 05:13:16 +08:00
举个例子,几个月不写 c++,你会觉得自己什么都懂了,语法上没有什么需要继续学的。但是一旦回到天天写 c++的日子,就会时不时的有新收获,发现要学的还很多,这东西很难

机器学习呢,现在还是很幼稚的阶段,理论欠缺甚多,远未成熟。实际做事也是,摸索着前进。
murmur
2017-01-27 05:16:12 +08:00
这跟普通程序员没多大关系,但是培训班是绝对不会讲这些东西的,就算是调参要么靠直觉要么靠数学两个都不会你能干嘛
一个训练程序多少个参数呢 都是阿尔法北塔伽马的
这是核心竞争力
对了 调参你以为很简单么?训练数据放多少合适?迭代次数多少合适?多了会不会过拟合?

当然了,迫于经济压力,现在的机器学习算法都给竞价排名让步了
bravecarrot
2017-01-27 08:10:20 +08:00
调参方法都是商业秘密
model 都差不多 看谁调参厉害
binux
2017-01-27 09:32:57 +08:00
机器学习是一个工具,在不同的场景需要搭建大量的 pipeline 才能使用。而大量现成的库和模型让一般程序员也能利用机器学习的成果。
其次机器学习,数据远比模型重要,你其实并不需要一个 ML 博士,也有可能做得更好。即使你做不到最优的模型,一个最简单的概率模型也能带来 80%的提升。
最后,机器学习不是魔法,它无法噗地一下就解决你的问题,启发式算法并不可耻。详见 rules of ml 我觉得写得很好。
UnknownR
2017-01-27 10:04:24 +08:00
什么火做什么,乘机捞一笔走了,跟着资本走才有钱赚,只要不忘了技术的本质就好,或者能下定决心跳槽
18600491593
2017-01-27 10:28:48 +08:00
人的作用在于,思想创作。
tinybaby365
2017-01-27 10:48:42 +08:00
@snnn 深度神经网络理论早已提出,后来的 GPU 计算能力也证明其可行。现在各种接近梯度消失,训练过拟合的方法不断出现。图像的机器分离效果已经超过人类,再觉得不成熟就是保守了。
matrix67
2017-01-27 10:52:36 +08:00
广告推荐啊,滴滴打车最短路径选择啊。我就想的到这些东西了。

还有比如知乎你一点进去很多乱七八糟的你不感兴趣,以后会有更好的 feed 流推荐?
ipwx
2017-01-27 11:08:51 +08:00
首先反驳“机器学习的算法就这么几种”这一观点。少年你得去看看 Graphical Models ,针对每一个实际问题要先建概率图模型,这一步就得兼顾可计算性和对问题的刻画能力。然后你找一种分布式算法去算吧, Parameter Servers 在向你招手。可以说每一个不同的数学模型建出来的 Graphical Model 就是一个不同算法,要是不同意,你就得承认 HMM 和 Logistic Regression 是同一种算法(都可以由 Graphical Model 刻画)。

要能精确通过数学语言刻画一个实际问题,这就是功力。

如果你不想用 Graphical Model 而投降“黑箱”算法——深度(神经网络)学习。呵呵,你真以为神经网络是完全黑箱吗?你明白 CNN 是针对数据的什么特性在工作吗?( local receptive field + 平移不变性)应用到具体的问题上就更复杂了,比如两分类,我如果保证正例标注只会漏标不会错标,你如何修改标准的 loss function 以提升在这个具体问题上的性能?

神经网络现在有很多零件,包括结构上比如 CNN, LSTM, Auto-Encoders ,启发式约束比如 L1/L2 正则化,各种 Sparsity Constraint ,训练方法比如 Nesterov Momumtum (一阶方法), L-BFGS (二阶方法)。网络结构尚且不说,其他每一个超参都会影响到最终训练出来的模型。如何训练神经网络是一种艺术而非技术。
ipwx
2017-01-27 11:10:53 +08:00
接上面没说完的话。楼主问普通程序员的价值在哪里?那我可以明确说,价值就在调参。每一个公司、每一个不同应用,都是要调参的,不可能让学术界的人在这上面浪费大量时间(他们还要研究新的结构、新的模型呢)。

而调参需要很多知识,否则你只能暴力调参,吃力不讨好。所以现在的“普通程序员”是没有调参的能力的。至于怎么办?我不知道。如何培养“普通程序员的调参能力”,这需要工业界去摸索。
laoyuan
2017-01-27 11:19:08 +08:00
干什么都脱离不了业务
t6attack
2017-01-27 12:04:07 +08:00
你不知道做什么,那对你来说就没价值。
zgqq
2017-01-27 12:11:22 +08:00
这个领域太高深,普通人能连砖都没得搬
wdlth
2017-01-27 12:35:58 +08:00
比如把静态分析加上机器学习,可以研究出写多少代码后就会出现大 BUG ……
snnn
2017-01-27 12:36:07 +08:00
还是那句话,你懂得越少,越是觉得什么都知道。你懂得越多,越发现这简直就是伪科学。
举个例子, SGD 被用了 10 几年,这东西真有什么理论基础吗?要说 paper ,早在 1950s 就有了。可是如果你拿它和 GD 、 BFGS 之流相比,你根本说不出来这东西为什么会 work ,你连优化的目标函数是什么都不一定能搞清楚。
snnn
2017-01-27 12:40:05 +08:00
你要是身在此行,必定需要经常读 paper ,关注行业动态。每年那么多大会,那么多 paper 发出来,总有几篇会启发到你,需要你去尝试。这时候你需要去准备 data ,去写 code , 去尝试你的想法。在别人那工作的好好的东西,在你这未必就有效。可能是他在撒谎,也可能是你工作做的不细致。总之,你不能坐等着,等着别人把这些都在 tensorflow 上面实现了,等着别人把一切都准备好了你只管输入几个参数点下 run 。那你就等着吧,等个 3-5 年肯定会有的。
ipwx
2017-01-27 16:53:01 +08:00
@snnn 我觉得随机梯度下降优化的是整体目标函数的期望,随机变量是 mini-batch 。收敛性可能不满足,但是大体思想是没错的。至于收敛性…… 有多少数学方法的收敛性在实际计算机应用的时候是仔细考量过的?差不多收敛就行了。

http://i1.piimg.com/4851/bb15e992a91de3c8.png
googlebot
2017-01-27 17:27:31 +08:00
看着像江湖骗子,和治疗癌症一样,整天都有所为新的突破,都在忽悠,

不过治疗癌症能骗钱,看来机器学习也能骗钱,
Neveroldmilk
2017-01-27 18:25:07 +08:00
到最后就是建模优化,基本都是码农的活。
@matrix67
寻路算法跟深度学习关系不大。

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

https://www.v2ex.com/t/337098

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

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

© 2021 V2EX