@Angelfish2017
跳槽找了份机器学习的工作,复习之余顺便反思一下目前的发展。内容很多来源自网络。
1.0 目前机器学习的瓶颈有哪些?
1.1. 不知道什么特征是重要特征。
其实这个问题就是特征如何提取和清洗的问题。现阶段针对很多问题,无法给出一套完美的解决方案。比如对于图像,deep learning/CNN很有用,是因为它能自动学习特征。而通过抽取这些特征就可以发现,很多都无法解释。
1.2. 现实世界中有label的数据太少,所以限制有监督学习算法。
真实世界很少有准确标记好label的数据,比如对于机器翻译。准确标注好的翻译数据很少,只有大量包含错误的模糊的数据。
1.3. 局部极小值问题
工程中的问题转换为数学中的优化问题,而对于绝大多数优化问题很难快速求解出全局最小值。
1.4. 计算时间
在工业界的训练数据动辄上TB,每天都得train一大批的model。光从计算时间上,就限制了SVM等相对复杂算法的流行程度。个人在微软、亚马逊经常见到的是逻辑回归train天下。偶尔有特殊的问题会用上SVM,但规模很小,且training data不会每天更新。因为只有logistic regression这种程度的方法在计算上是可行的。
1.5. 模型诠释
如果是logistic regression来train的model,那么最起码人还能看到每个feature的权重。
但若使用SVM、神经网络或更复杂的方法,train出来的结果首先不说,其模型对人而言是很难进行诠释的。这也会限制商业上的应用。因为我作为卖家都不知道自己train出来的model究竟该怎样诠释,外行的买家大概也只能够不明觉厉了吧。
1.6. 过于灵活相当于没有方法
面对一个问题,可选择的机器学习模型首先就有很多。即使选定了几种方法,每一种方法还会有n多变种。比如SVM如此多的kernel、神经网络的activation function等。就算把这个选好了,还要去tune model的parameter。
最可恨的是,这个流程很难总结出一套系统的经验指导。更多时候都只能trial and error。这相当于面对一个问题,临时去找方法、试各种方法一样。
2.0 深度学习目前面临的问题
2.1. 是大数据标定的问题
深度学习领域的一句流行语——“谁掌握着数据谁就掌握着市场”,就充分地说明了这一点;
2.2. 是计算量过大的问题
在具体应用中随着数据和网路层次的增加,不仅训练花费的时间在大幅增加,测试时间也在增加,在具体应用中很难实现前端化和实时化;
2.3. 是训练收敛问题
以在图像识别中应用最多的卷积神经网络(CNN)为例,目前已经出现了几百层的网络结构,训练过程中一般采用梯度下降的方法,这一过程中如果层数过多,数据初始化不合理就很容易不收敛。
3.0 人工智能当下的困境
对人工智能的描述围绕着以下几个中心:强度(有多智能)、广度(解决的是范围狭窄的问题,还是广义的问题)、训练(如何学习)、能力(能解决什么问题)和自主性(人工智能是辅助技术还是能够只靠自己行动)。这些每一个中心都有一个范围,而且这个多维空间中的每一个点都代表着理解人工智能系统的目标和能力的一种不同的方式。
在强度(strength)中心上,可以很容易看到过去 20 年的成果,并认识到我们已经造出了一些极其强大的程序。深蓝(Deep Blue)在国际象棋中击败了 Garry Kasparov;沃森(Watson)击败了 Jeopardy 的常胜冠军;AlphaGo 击败了可以说是世界上最好的围棋棋手李世石。
但所有这些成功都是有限的。深蓝、沃森和 AlphaGo 都是高度专业化的、目的单一的机器,只能在一件事上做得很好。深蓝和沃森不能下围棋,AlphaGo 不能下国际象棋或参加 Jeopardy,甚至最基本的水平都不行。它们的智能范围非常狭窄,也不能泛化。
沃森已经在医疗诊断等应用中取得了很多成果,但它基本上仍然只是一个必须为特定领域专门调制的问答机器。深蓝拥有大量关于国际象棋策略的专门知识和百科全书式的开放知识。AlphaGo 是用更通用的架构构建的,但其代码中仍然有很多人工编码的知识。我不是轻视或低估他们的成就,但认识到他们还没有做成的事也是很重要的。
我们还没能创造出可以解决多种多样不同类型问题的人工通用智能(artificial general intelligence)。我们还没有听一两年人类对话的录音就能自己说话的机器。尽管 AlphaGo 通过分析数千局比赛然后又进行更多的自我对弈而「学会」了下围棋,但这同样的程序却不能用来掌握国际象棋。
同样的一般方法呢?也许可以吧。但我们目前最好的成就离真正的通用智能还很远——真正的通用智能能灵活地无监督地学习,或能足够灵活地选择自己想要学习的内容,不管那是玩棋盘游戏,还是设计 PC 板。