ZNDS智能電視網 推薦當貝市場

TV應用下載 / 資源分享區(qū)

軟件下載 | 游戲 | 討論 | 電視計算器

綜合交流 / 評測 / 活動區(qū)

交流區(qū) | 測硬件 | 網站活動 | Z幣中心

新手入門 / 進階 / 社區(qū)互助

新手 | 你問我答 | 免費刷機救磚 | ROM固件

查看: 10437|回復: 4
上一主題 下一主題
[交流討論]

普通程序員如何正確學習人工智能方向的知識?

[復制鏈接]
跳轉到指定樓層
樓主
發(fā)表于 2018-12-26 14:00 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式 | 未知

“互聯網+”已經發(fā)展的差不多了,應有盡有,空間不大,下個浪潮會不會是“AI+”?那么作為一個普通程序員,如何提前向人工智能(AI)靠攏?

上一篇:有哪些合適老人的智能電視?
下一篇:sony rx1r出現這個情況是為什么?
沙發(fā)
發(fā)表于 2018-12-26 14:00 | 只看該作者 | 來自浙江
本人碼農,從六月開始正式接觸機器學習(其實五年前的本科畢設就是在生物信息領域應用神經網絡的項目,但是非常淺?。?,深吸一口氣,先要聲明“人之患在好為人師”,我用的步驟只是適合我,下面的內容僅供參考。

第一步:復習線性代數。(學渣的線代忘了好多-_-||)
懶得看書就直接用了著名的——麻省理工公開課:線性代數,深入淺出效果拔群,以后會用到的SVD、希爾伯特空間等都有介紹;廣告:邊看邊總結了一套筆記 GitHub - zlotus/notes-linear-algebra: 線性代數筆記。
第二步:入門機器學習算法。
還是因為比較懶,也就直接用了著名的——斯坦福大學公開課 :機器學習課程,吳恩達教授的老版cs229的視頻,講的非常細(算法的目標->數學推演->偽代碼)。這套教程唯一的缺點在于沒有介紹最近大火的神經網絡,但其實這也算是優(yōu)點,讓我明白了算法都有各自的應用領域,并不是所有問題都需要用神經網絡來解決;多說一點,這個課程里詳細介紹的內容有:一般線性模型、高斯系列模型、SVM理論及實現、聚類算法以及EM算法的各種相關應用、PCA/ICA、學習理論、馬爾可夫系列模型。課堂筆記在:CS 229: Machine Learning (Course handouts),同樣非常詳細。廣告:邊看邊總結了一套筆記 GitHub - zlotus/notes-LSJU-machine-learning: 機器學習筆記
第三步:嘗試用代碼實現算法。
依然因為比較懶,繼續(xù)直接使用了著名的——機器學習 | Coursera ,還是吳恩達教授的課程,只不過這個是極簡版的cs229,幾乎就是教怎么在matlab里快速實現一個模型(這套教程里有神經網絡基本概念及實現)。這套課程的缺點是難度比較低,推導過程非常簡略,但是這也是它的優(yōu)點——讓我專注于把理論轉化成代碼。廣告:作業(yè)參考 GitHub - zlotus/Coursera_Machine_Learning_Exercises: Machine Learning by Andrew Ng from Coursera
第四步:自己實現功能完整的模型——進行中。
還是因為比較懶,搜到了cs231n的課程視頻 CS231n Winter 2016 - YouTube ,李飛飛教授的課,主講還有Andrej Karpathy和Justin Johnson,主要介紹卷積神經網絡在圖像識別/機器視覺領域的應用(前面神經網絡的代碼沒寫夠?這門課包你嗨到爆~到處都是從零手寫~)。這門課程的作業(yè)就更貼心了,直接用Jupyter Notebook布置的,可以本地運行并自己檢查錯誤。主要使用Python以及Python系列的科學計算庫(Scipy/Numpy/Matplotlib)。課堂筆記的翻譯可以參考 智能單元 - 知乎專欄,主要由知友杜客翻譯,寫的非常好~在多說一點,這門課對程序員來說比較走心,因為這個不像上一步中用matlab實現的作業(yè)那樣偏向算法和模型,這門課用Python實現的模型同時注重軟件工程,包括常見的封裝layer的forward/backward、自定義組合layer、如何將layer組成網絡、如何在網絡中集成batch-normalization及dropout等功能、如何在復雜模型下做梯度檢查等等;最后一個作業(yè)中還有手動實現RNN及其基友LSTM、編寫有助于調試的CNN可視化功能、Google的DeepDream等等。(做完作業(yè)基本就可以看懂現在流行的各種圖片風格變換程序了,如 cysmith/neural-style-tf)另外,這門課的作業(yè)實現非常推崇computational graph,不知道是不是我的幻覺……要注意的是講師A.K的語速奇快無比,好在YouTube有自動生成解說詞的功能,準確率還不錯,可以當字幕看。廣告:作業(yè)參考 GitHub - zlotus/cs231n: CS231n Convolutional Neural Networks for Visual Recognition (winter 2016) (我的在作業(yè)的notebook上加了一些推導演算哦~可以用來參考:D)

因為最近手頭有論文要撕,時間比較緊,第四步做完就先告一段落。后面打算做繼續(xù)業(yè)界傳奇Geoffrey Hinton教授的Neural Networks for Machine Learning | Coursera,再看看NLP的課程 Stanford University CS224d: Deep Learning for Natural Language Processing,先把基礎補完,然后在東瞅瞅西逛逛看看有什么好玩的……

PS:一直沒提諸如TensorFlow之類的神器,早就裝了一個(可以直接在conda中為Tensorflow新建一個env,然后再裝上Jupyter、sklearn等常用的庫,把這些在學習和實踐ML時所用到的庫都放在一個環(huán)境下管理,會方便很多),然而一直沒時間學習使用,還是打算先忍著把基礎部分看完,抖M總是喜歡把最好的留在最后一個人偷偷享受2333333(手動奸笑

PS**2:關于用到的系統(tǒng)性知識,主要有:
線性代數,非常重要,模型計算全靠它~一定要復習扎實,如果平常不用可能忘的比較多;
高數+概率,這倆只要掌握基礎就行了,比如積分和求導、各種分布、參數估計等等。(評論中有知友提到概率與數理統(tǒng)計的重要性,我舉四肢贊成,因為cs229中幾乎所有算法的推演都是從參數估計及其在概率模型中的意義起手的,參數的更新規(guī)則具有概率上的可解釋性。對于算法的設計和改進工作,概統(tǒng)是核心課程,沒有之一。答主這里想要說的是,當拿到現成的算法時,僅需要概率基礎知識就能看懂,然后需要比較多的線代知識才能讓模型高效的跑起來。比如最近做卷積的作業(yè), 我手寫的比作業(yè)里給出的帶各種trick的fast函數慢幾個數量級,作業(yè)還安慰我不要在意效率,豈可修!)
需要用到的編程知識也就是Matlab和Numpy了吧,Matlab是可以現學現賣的;至于Python,就看題主想用來做什么了,如果就是用來做機器學習,完全可以一天入門,如果想要做更多好玩的事,一天不行那就兩天。(貼一個Python/Numpy的簡要教程:Python Numpy Tutorial,是cs231n的課堂福利。)

我感覺機器學習的先修就這么點,記得Adobe的馮東大神也說過機器學習簡直是21世界的黑科技——因為理論非常簡單但是效果驚人的好。
回復 支持 反對

使用道具 舉報

板凳
發(fā)表于 2018-12-26 14:02 | 只看該作者 | 來自浙江
說說我學習深度學習的經歷吧,從開始學習到現在大概有4個月,只能算新手,剛好可以回答新手問題。

先說編程:自認會用C++, 熟悉Python

英語水平:中等,能很快讀懂英文科學文獻

最開始對人工智能/深度學習感興趣是因為想用它試一試自然語言生成,后來想到一個物理方面的題目,預計可以用深度學習技術解決,開始接觸深度神經網絡。記錄一下學習歷程,

1. 安裝 Tensorflow(google 開源的深度學習程序), 嘗試里面最簡單的例子MNIST 獲得激勵。
2. 之后嘗試通過讀書(看視頻)理解最簡單的全連接神經網絡
先搜索找到答案:為什么要Go Deep?
(1)神經網絡中輸入層,隱藏層,輸出層之間矩陣乘積的維度變化。
(2)Weight, Bias 這些是什么,改變它們有什么結果。
(3)激勵函數是什么,有什么作用,有哪些常用的激勵函數
(4)誤差如何向后傳遞,網絡如何通過最小化誤差函數更新,有哪些常用的優(yōu)化方法
以上這些在一本交互式電子書中可以找到答案:
Neural networks and deep learning
(5)  如何對權重正規(guī)化,L1, L2, BatchNormalization, (這些在以后真正應用的時候再看)
Deep Learning chapter 7 for L1, L2 regulation.
Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift (2015) original paper for BN
why does batch normalization help? Quora
Note for BN in Chinese
Implementing Batch Normalization in Tensorflow from R2RT
Layer normalization (2016) Replace Batch Normalization in RNN
Why Does Unsupervised Pre-training Help Deep Learning?
Summary and discussion on pre training

3. 選擇一種比較比較底層的神經網絡開源庫,tensorflow 或 theano,
(1) 讀官方文檔 https://www.tensorflow.org/versions/r0.11/tutorials/index.html
(2) 看周莫凡的網絡教程 https://www.youtube.com/user/MorvanZhou
(3) 重復敲代碼,重復實現例子程序
4.  開始理解各種不同神經網絡架構所能處理的問題
(1) CNN 圖像識別,圖像處理,語音處理
(2)RNN,LSTM 自然語言理解與生成
(3)增強學習,玩游戲 :)
5.  嘗試各種開源的有意思的神經網絡項目,新手可以從下面這個列表開始
(1)Andrej Karpathy blog char-rnn, Deep Reinforcement Learning: Pong from Pixels
(2)Neural Style In tensorflow.

6. 如果能翻墻,注冊 twitter, facebook 賬號,follow 那些文章中經常出現的大牛的名字。他們每天提供很多新動向及最新技術,很多時候有很 Fancy的應用。試試從這個大牛follow的人開始follow:twitter.com/karpathy

當你對這些都很熟悉的時候,開始閱讀艱深的文獻:
1. CNN 的原始文獻
2. RNN 和 LSTM 的原始文獻
3. Reinforcement Learning 的原始文獻
4. Google DeepMind 發(fā)表在 Nature 上的幾篇經典

最后推薦一個高級點的庫: Keras Documentation
雖然這個庫還在發(fā)展階段,里面仍有不少bug,但前途不可限量,可以很容易實現你之前讀文章時候見到的那些復雜的構架。作為例子,這里有個教程:
Deep learning book in ipython-notebook and Keras Many example code in Keras.

這些學習歷程中遇到的資料都記錄在了我的個人note里,希望大家共勉:web-docs.gsi.de/~lpang/

最后強調一個最最重要的事情:要有自己的想法,有將這種新技術用到自己項目中的強烈愿望,從開始就要Coding,不斷嘗試才能不斷進步。

(看了很多其他的回答,在這里想補充一段)
說實話,作為一個其他行業(yè)(物理,工程,化學,醫(yī)學,農業(yè),衛(wèi)星地圖識別,網絡安全領域,社會科學)的普通程序員,在本行業(yè)有比較深的理論和實驗背景,能接觸到海量數據(無論是傳感器數據,互聯網數據還是蒙特卡洛模擬數據),想做處一些創(chuàng)新性,交叉性的工作,這一輪人工智能的風絕對是要跟的。

作為一個計算機專業(yè)的人,可能覺得機器學習,人工智能,深度學習已經炒的過熱了。但是對于其他領域,可能大部分人還沒有想到把最基本的機器學習算法如:PCA,SVM,k-means...運用到本行業(yè)積累的大數據上, 更不要說最近的深度學習。

作為其他行業(yè)的普通程序員(除了數學與理論物理),我們不要指望從理論上徹底解決深度學習現存的問題。我們的優(yōu)勢不在這里,我們的優(yōu)勢是計算機專業(yè)的人所沒有的專業(yè)知識,行業(yè)大數據。我們需要做的是把機器學習,深度神經網絡當作工具,知道它們能做什么,如何去做。參考Andrew Ng 的機器學習筆記,
Machine Learning - complete course notes

舉幾個簡單的例子:

1. 使用深度學習中生成風格化圖片的技術,制備具有特定功能的抗癌藥物
The cornucopia of meaningful leads: Applying deep adversarial autoencoders for new molecule development in oncology

2.使用反常探測,尋找網絡攻擊 Cyber-attacks prediction

3. 對于國家來說,更加聰明的互聯網關鍵詞過濾

4. 自動探測衛(wèi)星地圖上道路,建筑,車輛,河流。。。

5. 環(huán)境科學中尋找霧霾與眾多可能因素的非線性關聯

我們用卷積神經網絡來區(qū)分量子色動力學相變是crossover還是一階相變。(1年之后回來修改)回答這個問題的時候,文章剛剛寫好,最近文章已經在《自然-通訊》Nature Communications 雜志發(fā)表,網上公開鏈接是 An equation-of-state-meter of quantum chromodynamics transition from deep learning , 希望能給堅持在這個方向,做 AI + X 交叉學科應用的同學帶來精神上的激勵。

普通程序員如何正確學習人工智能方向的知識?
回復 支持 反對

使用道具 舉報

地板
發(fā)表于 2018-12-26 14:03 | 只看該作者 | 未知
大學是信息安全,可以說是IT眾小專業(yè)中和機器學習距離最遠的一個。讀研轉機器學習,也許經歷對你會有幫助。

假設你有程序員的基礎,懂至少一門語言,和基礎的數學知識。

首先,可以先找一個機器學習的工具玩起來。比如說現在很火的MXNet,Tensorflow…等
這個過程是為了培養(yǎng)親切感,對機器學習有初步感性認識。
我來做畢設前,導師讓我看語言模型。我對著一篇大牛的博士論文看了半個月,過來之后,導師讓我改一個復雜的模型,我是懵逼的。
理論和數學公式我都懂!可是這坨高大上的神經網絡在計算機里到底是一個怎樣的東西啊?…這是我當時內心真實寫照。跑上了工具一切都清晰起來了。
所以現在帶本科生,都是先跑上工具,然后繼續(xù)后面的基礎知識完備和深入研究。

有了感性認識以后,可以開始補機器學習的底層基礎了。
首先是概率論,不確定你學過沒,學過不用的話大概率也忘了,而且大概率當時學的時候并不知道這個有什么用。
矩陣理論和線性代數同理。
最優(yōu)化理論也是重中之重。


這四個基礎數學知識學完之后,可以開始學上層的基礎了。
機器學習可遠遠不止是現在大熱的神經網絡。
推薦Andrew的筆記,很多節(jié)~網上有很多譯版,即使是英文原版也非常全面易懂。
或者是最近也很火的西瓜書(周志華的機器學習)

做完以上幾點就挺不容易的。

在學晦澀的數學和機器學習基礎算法的同時,可以轉轉工具玩玩,實現一下最近比較火的模型。無論是語音,圖像,NLP或者什么自己感興趣的,調節(jié)調節(jié)。這個過程中,你一定對工具的上層代碼都熟悉了。

到這一步:知道數學原理,精通基礎經典機器學習算法,會用機器學習工具,會改工具,已經算一個比較合格的機器學習程序員了吧。

接下來,還想繼續(xù)深入的話,工程方面可以選擇讀讀工具的底層實現代碼,涉及到cuda運算,或者進程調度,分布式編程這方面的。
自己完完全全寫個神經網絡,或者寫個機器學習工具練練手。學習下GPU編程,多線程編程,多機多卡,分布式等等。

科研方面就可以在數學原理,模型結構,或者應用,數據上動動腦子做文章了。
回復 支持 反對

使用道具 舉報

5#
發(fā)表于 2018-12-26 14:03 | 只看該作者 | 來自浙江
你要考慮一個問題,寫下“‘互聯網+’已經發(fā)展的差不多了,應有盡有,空間不大,下個浪潮會不會是‘AI+’?”這句話的人,很可能當初是因為干不了程序員才改行去做網編。
回復 支持 反對

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

Archiver|新帖|標簽|軟件|Sitemap|ZNDS智能電視網 ( 蘇ICP備2023012627號 )

網絡信息服務信用承諾書 | 增值電信業(yè)務經營許可證:蘇B2-20221768 丨 蘇公網安備 32011402011373號

GMT+8, 2024-9-21 03:22 , Processed in 0.061714 second(s), 14 queries , Redis On.

Powered by Discuz!

監(jiān)督舉報:report#znds.com (請將#替換為@)

© 2007-2024 ZNDS.Com

快速回復 返回頂部 返回列表