普通程序员如何向人工智能靠拢?
1.如果你数学基础不行,英语不行,不要因为人工智能热门就强行向人工智能靠拢,即使靠拢了也是在外围转圈,没什么实际用处。深度学习之类的还是让更专业的人去做。做一个更专业的程序员更好,术业有专攻。2.如果你数学基础好,英语强,又对人工智能有强烈的兴趣,要么读一个相关的硕士学位,要么按照前面高票答案一步一步自学,但关键是做好路径规划:实践,用它解决某个实际问题,或者有一定基础后加入某个相关的公司或团队,这样的“靠拢”比较靠谱。
1.追求新热门,不如安心提高基础技能,例如数据结构与算法,自己平时造一些小轮子,当然这很多像我一样普通程序员,大牛除外2.阿法狗下围棋现在已经秒杀人类,但是也就局限在围棋这个领域3.人工智能应用在将来很长一段时间在很多领域内得到广泛的应用,但是在一个复杂的情场下应用还是需要很长路要走4.微软亚洲研究院院长洪小文所说HI+AI是AI的方向5.最后结论:AI是高级工具,善用为先,与其追求技术的突破,不如找到好的应用结合点
【入门成为AI工程师的可行路径】 虽然从垂直领域讲有语音识别,图像视觉,个性化推荐等业务领域的AI工程师,但从其所从事的研发内容来看,从事AI研发的工程师主要分为3类:1)AI算法研究 这类人大都有博士学历,在学校中积累了较好的理论和数学基础积累,对最新的学术成果能较快理解和吸收。这里的理论是指比如语音处理,计算机视觉等专业知识。AI算法研究的人主要研究内容有样本特征,模型设计和优化,模型训练。样本特征是指如何从给定的数据中构建样本,定义样本的特征,这在个性化推荐领域中就非常重要。模型设计和优化是设计新的网络模型,或基于已有的模型机型迭代优化,比如CNN网络模型中AlexNet,GoogleNetv1/v2/v3,ResNet等新模型的不断出现,另外就是比如模型剪枝,在损失5%计算精度情况下,减少80%计算量,以实现移动终端的边缘计算等等。模型训练是指训练网络,如何防止过拟合以及快速收敛。2)AI工程实现 这类人主要提供将计算逻辑,硬件封装打包起来,方便模型的训练和预测。比如:精通Caffee/TensorFlow等训练框架源码,能熟练使用并做针对性优化;构建机器学习平台,降低使用门槛,通过页面操作提供样本和模型就能启动训练;通过FPGA实行硬件加速,实现更低延时和成本的模型预测;在新模型验证完成后,实现在线平滑的模型切换; 3)AI应用 侧重验证好的模型在业务上的应用,常见语音识别,图像视觉,个性化推荐。当然这也包括更多结合业务场景的应用,比如终端网络传输带宽的预测,图片转码中参数的预测等等。
ai方向现在最火的是神经网络。所以就先说了一下神经网络如何入门,再说一下传统机器学习算法(偏向统计的)如何入门【神经网络入门】神经网络只要弄清楚几个基础概念接下来基本问题不大,应该可以看懂论文和各种材料了。推荐一个入门资料:Neuralnetworksanddeeplearning(看不懂英文自己找翻译版哈工大SCIR的公众号有一个版本)这本小小的在线电子书通过一个经典的手写识别体案例深入浅出的把神经网络的基本概念都讲的很明白了。(数学基础只需要一点点微积分求导和一点点线性代数)核心概念主要包括: 基本原理: 神经元基本原理 如何进行学习:反向传播算法(梯度下降) 经典网络结构:卷积神经网络(CNN) 如何改进现有结构:各种正则化方法(L1L2dropout人工增加数据等) 历史发展和前景:经典论文(如Alexnet结构)其它新型结构LSTM等【个人学习机器学习经历】早期犯了很大的错误,一开始就看PRML《机器学习》《统计学习方法》这些厚书,虽然讲的很好,但是自己很不适应。看视频:效果好那么一点,但是有些视频讲的太浅,(比如周志华那本书附带的光盘里的视频,实在看不下去),台大的机器学习视频也看过,放弃了。斯坦福大学的视频尝试了几次放弃过几次。可能那段时间太焦虑。加上学习时间有限,掉进了数学坑:自己看书上需要用很多数学的 矩阵分析 优化之类的 跑去补这些基础知识了,当然结果可想而知。最后也是不了了之。不是看不懂因为学习时间太有限了,下班才有时间看。进度太慢感觉不行,果断放弃了。大半年基本没啥进展。后来偶然看了本:ESL的精简版找到一点点学习的节奏感。然后又把斯坦福的课程拾起来看。就看懂了。以前的积累也没白费,前一阵子一天搞定了好几个算法。我想这不是我学习能力突飞猛进了,是学习的节奏感找到了,然后有了一定的基础,以前虽然看不懂的东西留下了一点印象,有了基础就容易明白。
普通程序员拥抱人工智能,最简单有效的策略是这样的:找到一个开源框架,比如TensorFlow学习这个框架,了解它的适用场景针对适用场景,构建一些小的示例,把框架用起来如果想拥抱的更彻底,那就需要懂相应的算法,要求数学,普通程序员基本只用初中数学(我初中数学都忘了……),所以难度较大。
大学是信息安全,可以说是IT众小专业中和机器学习距离最远的一个。读研转机器学习,也许经历对你会有帮助。假设你有程序员的基础,懂至少一门语言,和基础的数学知识。首先,可以先找一个机器学习的工具玩起来。比如说现在很火的MXNet,Tensorflow…等这个过程是为了培养亲切感,对机器学习有初步感性认识。我来做毕设前,导师让我看语言模型。我对着一篇大牛的博士论文看了半个月,过来之后,导师让我改一个复杂的模型,我是懵逼的。理论和数学公式我都懂!可是这坨高大上的神经网络在计算机里到底是一个怎样的东西啊?…这是我当时内心真实写照。跑上了工具一切都清晰起来了。所以现在带本科生,都是先跑上工具,然后继续后面的基础知识完备和深入研究。有了感性认识以后,可以开始补机器学习的底层基础了。首先是概率论,不确定你学过没,学过不用的话大概率也忘了,而且大概率当时学的时候并不知道这个有什么用。矩阵理论和线性代数同理。最优化理论也是重中之重。这四个基础数学知识学完之后,可以开始学上层的基础了。机器学习可远远不止是现在大热的神经网络。推荐Andrew的笔记,很多节~网上有很多译版,即使是英文原版也非常全面易懂。或者是最近也很火的西瓜书(周志华的机器学习)做完以上几点就挺不容易的。在学晦涩的数学和机器学习基础算法的同时,可以转转工具玩玩,实现一下最近比较火的模型。无论是语音,图像,NLP或者什么自己感兴趣的,调节调节。这个过程中,你一定对工具的上层代码都熟悉了。到这一步:知道数学原理,精通基础经典机器学习算法,会用机器学习工具,会改工具,已经算一个比较合格的机器学习程序员了吧。接下来,还想继续深入的话,工程方面可以选择读读工具的底层实现代码,涉及到cuda运算,或者进程调度,分布式编程这方面的。自己完完全全写个神经网络,或者写个机器学习工具练练手。学习下GPU编程,多线程编程,多机多卡,分布式等等。科研方面就可以在数学原理,模型结构,或者应用,数据上动动脑子做文章了。
回答请先登录