首頁 收藏 QQ群
 網(wǎng)站導(dǎo)航

ZNDS智能電視網(wǎng) 推薦當(dāng)貝市場

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

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

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

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

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

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

查看: 10693|回復(fù): 4
上一主題 下一主題
[交流討論]

普通程序員如何正確學(xué)習(xí)人工智能方向的知識?

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

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

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

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

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

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

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

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

使用道具 舉報

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

先說編程:自認(rèn)會用C++, 熟悉Python

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

最開始對人工智能/深度學(xué)習(xí)感興趣是因為想用它試一試自然語言生成,后來想到一個物理方面的題目,預(yù)計可以用深度學(xué)習(xí)技術(shù)解決,開始接觸深度神經(jīng)網(wǎng)絡(luò)。記錄一下學(xué)習(xí)歷程,

1. 安裝 Tensorflow(google 開源的深度學(xué)習(xí)程序), 嘗試?yán)锩孀詈唵蔚睦覯NIST 獲得激勵。
2. 之后嘗試通過讀書(看視頻)理解最簡單的全連接神經(jīng)網(wǎng)絡(luò)
先搜索找到答案:為什么要Go Deep?
(1)神經(jīng)網(wǎng)絡(luò)中輸入層,隱藏層,輸出層之間矩陣乘積的維度變化。
(2)Weight, Bias 這些是什么,改變它們有什么結(jié)果。
(3)激勵函數(shù)是什么,有什么作用,有哪些常用的激勵函數(shù)
(4)誤差如何向后傳遞,網(wǎng)絡(luò)如何通過最小化誤差函數(shù)更新,有哪些常用的優(yōu)化方法
以上這些在一本交互式電子書中可以找到答案:
Neural networks and deep learning
(5)  如何對權(quán)重正規(guī)化,L1, L2, BatchNormalization, (這些在以后真正應(yīng)用的時候再看)
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. 選擇一種比較比較底層的神經(jīng)網(wǎng)絡(luò)開源庫,tensorflow 或 theano,
(1) 讀官方文檔 https://www.tensorflow.org/versions/r0.11/tutorials/index.html
(2) 看周莫凡的網(wǎng)絡(luò)教程 https://www.youtube.com/user/MorvanZhou
(3) 重復(fù)敲代碼,重復(fù)實現(xiàn)例子程序
4.  開始理解各種不同神經(jīng)網(wǎng)絡(luò)架構(gòu)所能處理的問題
(1) CNN 圖像識別,圖像處理,語音處理
(2)RNN,LSTM 自然語言理解與生成
(3)增強學(xué)習(xí),玩游戲 :)
5.  嘗試各種開源的有意思的神經(jīng)網(wǎng)絡(luò)項目,新手可以從下面這個列表開始
(1)Andrej Karpathy blog char-rnn, Deep Reinforcement Learning: Pong from Pixels
(2)Neural Style In tensorflow.

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

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

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

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

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

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

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

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

舉幾個簡單的例子:

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

2.使用反常探測,尋找網(wǎng)絡(luò)攻擊 Cyber-attacks prediction

3. 對于國家來說,更加聰明的互聯(lián)網(wǎng)關(guān)鍵詞過濾

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

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

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

普通程序員如何正確學(xué)習(xí)人工智能方向的知識?
回復(fù) 支持 反對

使用道具 舉報

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

假設(shè)你有程序員的基礎(chǔ),懂至少一門語言,和基礎(chǔ)的數(shù)學(xué)知識。

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

有了感性認(rèn)識以后,可以開始補機器學(xué)習(xí)的底層基礎(chǔ)了。
首先是概率論,不確定你學(xué)過沒,學(xué)過不用的話大概率也忘了,而且大概率當(dāng)時學(xué)的時候并不知道這個有什么用。
矩陣?yán)碚摵途€性代數(shù)同理。
最優(yōu)化理論也是重中之重。


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

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

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

到這一步:知道數(shù)學(xué)原理,精通基礎(chǔ)經(jīng)典機器學(xué)習(xí)算法,會用機器學(xué)習(xí)工具,會改工具,已經(jīng)算一個比較合格的機器學(xué)習(xí)程序員了吧。

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

科研方面就可以在數(shù)學(xué)原理,模型結(jié)構(gòu),或者應(yīng)用,數(shù)據(jù)上動動腦子做文章了。
回復(fù) 支持 反對

使用道具 舉報

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

使用道具 舉報

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

本版積分規(guī)則

Archiver|新帖|標(biāo)簽|軟件|Sitemap|ZNDS智能電視網(wǎng) ( 蘇ICP備2023012627號 )

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

GMT+8, 2024-10-18 22:30 , Processed in 0.067055 second(s), 16 queries , Redis On.

Powered by Discuz!

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

© 2007-2024 ZNDS.Com

快速回復(fù) 返回頂部 返回列表