首页 > 编程知识 正文

人工智能开发过程中的关键点

时间:2023-05-04 17:50:32 阅读:179196 作者:2678

计算难以瞬间完成任何人工智能解决方案的计算,需要一定的时间,而方案的响应速度,对商业APP应用的成败起着非常重要的作用。 不能盲目地假定任何算法都一定能在规定时间内在所有数据集上完成。 必须测试算法的性能是否在可接受的应用范围内。

以搜索引擎为例,用户在返回结果之前的时间上有忍耐的极限。 如果用户等待时间超过10秒,将丢失50%的用户,如果等待时间超过1分钟,将丢失90%以上的用户。 开发智能APP应用系统时,为了达到更好的算法精度,不可忽略系统运算和等待时间。 否则,会导致整个产品的失败。

数据的规模非常重要。 在考虑智能APP时,数据规模是一个重要因素。 数据规模的影响可以分为两点来考察。 第一,规模影响了APP应用系统的响应速度。 如上节所述; 第二,它考验了在大数据集上提取有价值结果的能力。 例如,为100个用户开发的电影和音乐推荐系统可能会很有效,但如果将同样的算法移植到有100000个用户的环境中,效果可能会不理想。

rif;">其次,使用更多的数据来训练的简单算法,比受制于维度诅咒(Dimension Curse)的复杂算法往往有好得多的效果。类似Google这样拥有海量数据的大型企业,优秀的应用效果不仅来自于精妙复杂的算法,也来自于其对海量训练数据的大规模分析挖掘。



不同的算法具有不同的扩展能力


我们不能假设智能应用系统都可以通过简单增加服务器的方法来扩展性能。有些算法是有扩展性的,而另一些则不行。

 

例如如果我们要从数亿的文章标题里,找出标题相似的各个组的文章,注意并不是所有的聚类算法此时都能并行化运行的,你应该在设计系统的同时就考虑可扩展性。有些情况下你需要将数据切分成较小的集合,并能够让智能算法在各个集合上并行运行。设计系统时所选择的算法,往往需要有并行化的版本,而在一开始就需要将其纳入考虑,因为通常围绕着算法还会有很多相关联的商业逻辑和体系结构需要一并考虑。



泛化能力

机器学习实践中最普遍存在的一个误区是陷入处理细节中而忘了最初的目标——通过调查来获得处理问题的普适的方法。测试阶段是验证某个方法是否具备泛化能力(generalization ability)的关键环节(通过交叉验证、外部数据验证等方法),但是寻找合适的验证数据集不容易。如果在一个只有几百个样本的集合上去训练有数百万维特征的模型,试图想获得优秀的精度是很荒唐的。



考虑融入更多的可能性

你很可能听说过谚语“进来的是垃圾,出去的也是垃圾”(garbage in, garbage out),在建立机器学习应用中这一点尤其重要。为了避免挖掘的效果失控,关键是要充分掌握问题所在的领域,通过调查数据来生成各种各样的特征,这样的做法会对提升分类的准确率和泛化能力有很大的帮助。仅靠把数据扔进分类器就想获得优秀结果的幻想是不可能实现的。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。