这个问题不是一个糟糕的问题,只是有很多装神弄鬼的大神把人工智能吹到了天上去,就像以前说要想学计算机编程必须要数学好英语好一样,其实不见得。人工智能也是类似,很多人说要想搞人工智能必须会高等代数(甚至装逼到说连高等代数这个名词都不好,必须叫线性代数才牛逼)一样,其实没必要。 实际上,学人工智能分为三个层次: 第一层 对于绝大多数人来说,你只要会调用API接口就会人工智能。现在各种开放云全部提供各种人工智能接口,包括百度、阿里等等。需要语音识别吗?调接口就行了;需要图像识别吗?调接口就行了。相信我,你们公司的应用还没有牛逼到必须自己写算法的地步,市面上的各种开放接口所能做到的效果绝对比你自己写的强一百倍。当然,你只到这个层次,没有人会给你百万年薪,如果想要高薪,接着往下看。 第二层 对于剩下的人里的绝大多数来说,你还是不需要什么线性代数,如果你想稍微学得深入一些,不想直接使用阿里云的语音识别,而想了解得更深入一些,这时候,你需要学习Python语言或者R语言,对R语言我了解得不多,就以Python为例,这时候有2个框架是你需要知道的:scikit-learn, matplotlib。光知道了框架也没有用,你得知道你想干什么。就像师傅给你一把斧子和一把锯子,然后呢?接下来,你需要了解一下工具的用法,可以从最简单的泰坦尼克幸存者分类或者鸢尾花分类开始做起。没有什么神秘的,原理很简单:给了你2000个人的姓名、年龄、舱位号,你来预测一下另外1000个人是死还是活?问题够简单吧?这就是“机器学习”!scikit-learn里有几百种不同的算法,你可以一个一个拿来试,直到找到一个预测准确度最高的算法为止。而且scikit-learn已经把所有算法完全包装,甭管多复杂的算法,上来就是三板斧:创建、学习、预测: model = RandomForestClassifier() # 这里你可以随意选择任意算法 model.fit(X_train, y_train) model.score(X_test, y_test) 你觉得这需要多么复杂高深的线性代数吗?你学不会算我输。当然,这时候算法的精度不够高,大概80%多,不到90%的样子,如果你对预测结果的准确率不满意,恭喜你,你又上了一个层次,这时候你可以开始逐渐尝试一些神经网络的库,比如tensorflow的cnn等等,稍微需要一些技巧,不过还是不需要什么线性代数之类的鬼东西,准确度已经可以提升到95%以上了。因为神经网络是分层的,一开始层次不能太多,最多也就是七八层的样子,现在的一些神经网络已经可以提升到100多层,所以就叫深度神经网络,相应的机器学习也就得到了一个牛逼的名字——深度学习。 接下来是你该思考的问题:我能用这些库解决什么实际问题?假设你们公司是开饭馆的,那么能不能预测一下哪个饭点来的客人花钱多?诸如此类的问题,需要你去开动脑筋想一想,然后试着用这些库预测一下,看你的预测准不准。够简单吧?能做这事,大概你到外面能骗到三四十万年薪。 第三层 你实在是不爽别人开发的框架(你还是想要获得百万年薪),这时候你可以开发你自己的框架,做出一个比Tensorflow还要牛逼的框架,这个时候你需要用到高等代数了,一般你应该是大学里的一个研究生或者教授,到这个层面,我就帮不上你什么忙了,因为我也还没有修炼到那个程度。不过说真的,你搞这个东西能为公司挣回来百万吗?基本也是不可能的,所以这种算法的虚火要不了多长时间就会灭火,用不着羡慕别人。做这个基本就是觉得好玩去做而已,工程师在任何商业文化里都是被人利用然后唾弃最后资本赚钱的,喜欢就好。 附录 最后,英语好的话,可以经常上Kaggle寻摸寻摸,看看别人又在玩什么新花样了,增长眼界的同时也可以练练手。入门教程方面,Cousera上吴恩达教授的机器学习入门还是一门不错的课程,不过需要较好的英语。交朋友方面,可以看看我这篇被众多Java爱好者喷的体无完肤的小文。Python就是牛,在机器学习领域无敌手,哈哈哈!
这个问题不是一个糟糕的问题,只是有很多装神弄鬼的大神把人工智能吹到了天上去,就像以前说要想学计算机编程必须要数学好英语好一样,其实不见得。人工智能也是类似,很多人说要想搞人工智能必须会高等代数(甚至装逼到说连高等代数这个名词都不好,必须叫线性代数才牛逼)一样,其实没必要。
实际上,学人工智能分为三个层次:
第一层
对于绝大多数人来说,你只要会调用API接口就会人工智能。现在各种开放云全部提供各种人工智能接口,包括百度、阿里等等。需要语音识别吗?调接口就行了;需要图像识别吗?调接口就行了。相信我,你们公司的应用还没有牛逼到必须自己写算法的地步,市面上的各种开放接口所能做到的效果绝对比你自己写的强一百倍。当然,你只到这个层次,没有人会给你百万年薪,如果想要高薪,接着往下看。
第二层
对于剩下的人里的绝大多数来说,你还是不需要什么线性代数,如果你想稍微学得深入一些,不想直接使用阿里云的语音识别,而想了解得更深入一些,这时候,你需要学习Python语言或者R语言,对R语言我了解得不多,就以Python为例,这时候有2个框架是你需要知道的:
scikit-learn
,matplotlib
。光知道了框架也没有用,你得知道你想干什么。就像师傅给你一把斧子和一把锯子,然后呢?接下来,你需要了解一下工具的用法,可以从最简单的泰坦尼克幸存者分类或者鸢尾花分类开始做起。没有什么神秘的,原理很简单:给了你2000个人的姓名、年龄、舱位号,你来预测一下另外1000个人是死还是活?问题够简单吧?这就是“机器学习”!scikit-learn里有几百种不同的算法,你可以一个一个拿来试,直到找到一个预测准确度最高的算法为止。而且scikit-learn已经把所有算法完全包装,甭管多复杂的算法,上来就是三板斧:创建、学习、预测:你觉得这需要多么复杂高深的线性代数吗?你学不会算我输。当然,这时候算法的精度不够高,大概80%多,不到90%的样子,如果你对预测结果的准确率不满意,恭喜你,你又上了一个层次,这时候你可以开始逐渐尝试一些神经网络的库,比如tensorflow的cnn等等,稍微需要一些技巧,不过还是不需要什么线性代数之类的鬼东西,准确度已经可以提升到95%以上了。因为神经网络是分层的,一开始层次不能太多,最多也就是七八层的样子,现在的一些神经网络已经可以提升到100多层,所以就叫深度神经网络,相应的机器学习也就得到了一个牛逼的名字——深度学习。
接下来是你该思考的问题:我能用这些库解决什么实际问题?假设你们公司是开饭馆的,那么能不能预测一下哪个饭点来的客人花钱多?诸如此类的问题,需要你去开动脑筋想一想,然后试着用这些库预测一下,看你的预测准不准。够简单吧?能做这事,大概你到外面能骗到三四十万年薪。
第三层
你实在是不爽别人开发的框架(你还是想要获得百万年薪),这时候你可以开发你自己的框架,做出一个比Tensorflow还要牛逼的框架,这个时候你需要用到高等代数了,一般你应该是大学里的一个研究生或者教授,到这个层面,我就帮不上你什么忙了,因为我也还没有修炼到那个程度。不过说真的,你搞这个东西能为公司挣回来百万吗?基本也是不可能的,所以这种算法的虚火要不了多长时间就会灭火,用不着羡慕别人。做这个基本就是觉得好玩去做而已,工程师在任何商业文化里都是被人利用然后唾弃最后资本赚钱的,喜欢就好。
附录
最后,英语好的话,可以经常上Kaggle寻摸寻摸,看看别人又在玩什么新花样了,增长眼界的同时也可以练练手。入门教程方面,Cousera上吴恩达教授的机器学习入门还是一门不错的课程,不过需要较好的英语。交朋友方面,可以看看我这篇被众多Java爱好者喷的体无完肤的小文。Python就是牛,在机器学习领域无敌手,哈哈哈!