編程冠軍游戲規則,如何學習人工智能?
你有沒有想做一件事,睡不著覺的沖動,有沒有想做一件事,在睜眼的那一刻就能起來的毅力。這兩樣你都有,那你可以好好學習這個。真的是持之以恒。
不管是AI也好,其他學科也好,學習、研究的過程中不斷反思學科的歷史,總結學科的發展現狀,找出最重要的理念,總能讓人能“吾道一以貫之”。軟件工程師James Le近期根據他研究的經驗總結出了AI研究必須要知道的十種深度學習方法,非常具有啟發性。AI科技評論編譯如下。
The 10 Deep Learning Methods AI Practitioners Need to Apply
人們對機器學習的興趣在過去十年經歷了爆炸式的發展。計算機科學項目中、業界會議中、媒體報道中,你都能夠看到機器學習的影子。但是似乎所有關于機器學習的討論中,人們常常會把AI能做什么和他們希望AI能做什么混為一談。
從根本上來講,機器學習其實就是使用算法從原始數據中提取信息,并以某種類型的模型表示出來;然后我們使用這個模型來推斷我們尚未建模的其他數據。
神經網絡作為機器學習的一類模型,它們已經存在了至少50年。神經網絡的基本單元是節點,大致上模仿了哺乳動物大腦中的生物神經元的節點;節點之間的鏈接(也是模仿生物大腦)隨著時間的推移(訓練)而演化。
在上世紀八十年代中期和九十年代早期,許多重要的神經網絡構架都已經做出了,不過要想獲得好的結果還需要足夠強大的計算能力和大體量的數據集,這些當時在當時很不理想,所以也導致人們對機器學習的熱情逐漸冷淡了下來。在21世紀初,計算機的計算能力呈現了指數級的增長——業界見證了計算機技術的“寒武紀大爆發”,這在之前幾乎是不可想象的。深度學習作為這個領域中一個重要的架構,在計算能力爆發式增長的十年中,贏得了許多重要的機器學習競賽。這個紅利的熱度直到今年仍未降溫;今天,我們看到在機器學習的每個角落里都會提到深度學習。
為了更深入地了解這些,我參加了一門“深度學習”課程,并開發了一個圖像識別的神經網絡以及基于循環神經網絡(RNN)和長短項記憶(LSTM)的自然語言處理。可以去我的Github倉庫中查看這些代碼:
https://github.com/khanhnamle1994/deep-learning
最近,我也開始閱讀一些深度學習方面的學術論文。下面這些是我收集到的幾篇對深度學習領域的發展有重大影響的幾篇論文:
1、Gradient-Based Learning Applied to Document Recognition (1998)
http://yann.lecun.com/exdb/publis/pdf/lecun-01a.pdf
意義:向機器學習世界引進了卷積神經網絡
作者:Yann LeCun, Leon Bottou, Yoshua Bengio, and Patrick Haffner
2、Deep Boltzmann Machines (2009)
http://proceedings.mlr.press/v5/salakhutdinov09a/salakhutdinov09a.pdf
意義:為玻爾茲曼機提出了一種新的學習算法,其中包含許多隱藏變量層。
作者:Ruslan Salakhutdinov, Geoffrey Hinton
3、Building High-Level Features Using Large-Scale Unsupervised Learning (2012)
http://icml.cc/2012/papers/73.pdf
意義:解決了僅從未標記的數據構建高層次、特定類別的特征檢測器的問題。
作者:Quoc V. Le,Marc’Aurelio Ranzato,Rajat Monga,Matthieu Devin,Kai Chen,Greg S. Corrado,Jeff Dean,Andrew Y. Ng
4、DeCAF?—?A Deep Convolutional Activation Feature for Generic Visual Recognition (2013)
http://proceedings.mlr.press/v32/donahue14.pdf
意義:釋放了一個深度卷積激活特征的開源實現——DeCAF,以及所有相關的網絡參數,使視覺研究人員能夠深入地在一系列視覺概念學習范例中進行實驗。
作者:Jeff Donahue,Yangqing Jia,Oriol Vinyals,Judy Hoffman,Ning Zhang,Eric Tzeng,Trevor Darrell
5、Playing Atari with Deep Reinforcement Learning (2016)
https://www.cs.toronto.edu/~vmnih/docs/dqn.pdf
意義:提供了第一個可以使用強化學習從高維感官輸入中直接學習控制策略的深度學習模型。
作者:Volodymyr Mnih,Koray Kavukcuoglu,David Silver,Alex Graves,Ioannis Antonoglou,Daan Wierstra,Martin Riedmiller(DeepMind 團隊)
在這些學習和研究中,我發現大量非常有意思的知識點。在這里我將分享十個深度學習的方法,AI工程師可能會將這些應用到他們的機器學習問題當中。
不過,首先先讓我們來定義一下什么是“深度學習”。對很多人來說,給“深度學習”下一個定義確實很有挑戰,因為在過去的十年中,它的形式已經慢慢地發生了很大的變化。
先來在視覺上感受一下“深度學習”的地位。下圖是AI、機器學習和深度學習三個概念的一個關系圖。
AI的領域要相對較廣泛,機器學習是AI的一個子領域,而深度學習是機器學習領域中的一個子集。
深度學習網絡與“典型”的前饋多層網絡之間是有一些區別的,如下:
深度學習網絡比之前的網絡有更多的神經元
深度學習網絡具有更復雜的連接層的方式
深度學習網絡需要用強大的計算能力來訓練
深度學習網絡能夠進行自動特征提取
因此深度學習可以被定義為在以下四個基本網絡框架中擁有大量參數和層的神經網絡:
無監督預訓練網絡(Unsupervised Pre-trained Networks)
卷積神經網絡(Convolutional Neural Networks)
循環神經網絡(Recurrent Neural Networks)
遞歸神經網絡 (Recursive Neural Networks)
在這篇文章中,我主要對后三個框架比較感興趣。
卷積神經網絡 基本上就是用共享權重在空間中進行擴展的標準神經網絡。設計CNN主要是為了通過內部卷積來識別圖片,內部卷積可以看到待識別物體的邊。
循環神經網絡 基本上是在時間上進行擴展的標準神經網絡,因為邊進入下一個時間步,而不是在同一時間步進入下一個層。設計RNN主要是為了識別序列,例如語音信號或者文本。它里面的循環意味著網絡中存在短暫的記憶。
遞歸神經網絡 更類似于分層網絡,其中輸入序列沒有真正的時間面,而是輸入必須以樹狀方式分層處理。
以下10種方法可以應用于所有這些體系結構。
1、反向傳播
反向傳播是“誤差反向傳播”的簡稱,它是一種計算函數(在神經網絡中以函數形式存在)偏微分的方法。當你要用一個基于梯度的方法來解決一個最優問題時(注意梯度下降只是解決這類問題的一種方法),你希望在每一次迭代中計算函數梯度。
對于神經網絡而言,目標函數具有合成的形式。那么如何計算梯度呢?一般情況下有兩種常見的方法:
1)微分分析法。當你知道這個函數的形式時,你只需要用鏈式法則計算導數即可;
2)用有限差分方法來近似微分。這種方法的計算量很大,因為函數評估的數量是O(N),其中N是參數的數量。與微分分析法相比,這是比較昂貴的。不過,有限差分通常在調試時驗證后端實現。
2、隨機梯度下降
一個直觀理解梯度下降的方法是去想象一條溯源山頂的河流。這條河流會沿著山勢梯度的方向流向山麓下的最低點。
如果讓人來走,可能就不一樣了,你可能會先隨便選一個方向,然后沿著這個方向的梯度向下走;過一會兒再隨機換一個方向向下走;最后你發現自己差不多也到了谷底了。
數學化的理解就是:
隨機梯度下降主要用來求解類似于如下求和形式的優化問題:
梯度下降法:
當n很大時,每次迭代計算所有的梯度會非常耗時。隨機梯度下降的想法就是每次在Delta f_i 中隨機選取一個計算代替上面的Delta f_i,以這個隨機選取的方向作為下降的方向。這樣的方法反而比梯度下降能夠更快地到達(局部)最優解。
3、學習率衰減
在訓練模型的時候,通常會遇到這種情況:我們平衡模型的訓練速度和損失(loss)后選擇了相對合適的學習率(learning rate),但是訓練集的損失下降到一定的程度后就不在下降了,比如training loss一直在0.7和0.9之間來回震蕩,不能進一步下降。如下圖所示:
遇到這種情況通常可以通過適當降低學習率(learning rate)來實現。但是,降低學習率又會延長訓練所需的時間。
學習率衰減(learning rate decay)就是一種可以平衡這兩者之間矛盾的解決方案。學習率衰減的基本思想是:學習率隨著訓練的進行逐漸衰減。
學習率衰減基本有兩種實現方法:
線性衰減。例如:每過5個epochs學習率減半;
指數衰減。例如:每過5個epochs將學習率乘以0.1。
4、dropout
在當前的大規模神經網絡中有兩個缺點:
費時;
容易過擬合
Dropout 可以很好地解決這個問題。Dropout說的簡單一點就是在前向傳導的時候,讓某個神經元的激活值以一定的概率p停止工作,示意圖如下:
每次做完dropout,相當于從原始的網絡中找到一個更瘦的網絡。
Hinton在其論文中做了這樣的類比,無性繁殖可以保留大段的優秀基因,而有性繁殖則將基因隨機拆了又拆,破壞了大段基因的聯合適應性;但是自然選擇了有性繁殖,物競天擇,適者生存,可見有性繁殖的強大。dropout 也能達到同樣的效果,它強迫一個神經單元,和隨機挑選出來的其他神經單元共同工作,消除減弱了神經元節點間的聯合適應性,增強了泛化能力。
5、max pooling
池化(Pooling)是卷積神經網絡中另一個重要的概念,它實際上是一種形式的向下采樣。有多種不同形式的非線性池化函數,而其中“最大池化(Max pooling)”是最為常見的。它是將輸入的圖像劃分為若干個矩形區域,對每個子區域輸出最大值。
直覺上,這種機制能夠有效地原因在于,在發現一個特征之后,它的精確位置遠不及它和其他特征的相對位置的關系重要。池化層會不斷地減小數據的空間大小,因此參數的數量和計算量也會下降,這在一定程度上也控制了過擬合。通常來說,CNN的卷積層之間都會周期性地插入池化層。
6、批標準化
包括深度網絡在內的神經網絡需要仔細調整權重初始化和學習參數。批標準化使這些變得輕松許多。
權重問題:
無論權重的初始化如何,是隨機的還是經驗性的選擇,它們離學習權重都會很遠。考慮一個小批量,初期在所需的特征激活方面會有很多異常值。
深層神經網絡本身是病態的,初始層中的微小擾動都會導致后面層的非常大的變化。
在反向傳播過程中,這些現象會導致梯度彌散。這就意味著在學習權重產生所需要的輸出前,必須對梯度的異常值進行補償,這將導致需要額外的時段來收斂。
批量歸一化使這些梯度從分散到正常值并在小批量范圍內流向共同目標(通過歸一化)。
學習率問題:一般來說,學習率需要保持較低的值,使得只有一小部分的梯度來校正權重,原因是要使異常激活的梯度不影響已學習到的激活。通過批量標準化,可以減少這些異常激活,因此也就可以使用更高的學習率來加速學習過程。
7、long short-term memory
LSTM網絡具有以下三個方面,使其與循環神經網絡中的常見神經元不同:
1)它能夠決定何時讓輸入進入神經元;
2)它能夠決定何時記住上一個時間步中計算的內容;
3)它決定何時讓輸出傳遞到下一個時間步。
LSTM的美妙之處在于它能夠根據當前的輸入本身來決定所有這些。 所以你看下面的圖表:
當前時間的輸入信號x(t)決定所有上述3個點。 輸入門決定點1,遺忘門決定點2,輸出門決定點3。任何一條輸入都能夠采取所有這三個決定。這種設計其實是受到了我們大腦如何工作的啟發,并且可以基于輸入來處理突然的上下文切換。
8、skip-gram
詞嵌入模型的目標是為每個詞項學習一個高維密集表示,其中嵌入向量之間的相似性顯示了相應詞之間的語義或句法相似性。 Skip-gram是一個學習詞嵌入算法的模型。
skip-gram模型(以及許多其他的詞語嵌入模型)背后的主要思想如下:兩個詞項相似,如果它們共享相似的上下文。
換句話說,假設你有一個句子,例如“貓是哺乳動物”;如果你用“狗”而不是“貓”,這個句子還是一個有意義的句子。因此在這個例子中,“狗”和“貓”可以共享相同的上下文(即“是哺乳動物”)。
基于上述假設,你可以考慮一個上下文窗口(一個包含k個連續項的窗口),然后你跳過其中一個單詞,試著去學習一個能夠得到除跳過項外的所有項的神經網絡,并預測跳過的這個項。如果兩個詞在一個大語料庫中反復共享相似的語境,則這些詞的嵌入向量將具有相近的向量。
9、連續詞袋
在自然語言處理問題中,我們希望學習將文檔中的每個單詞表示為一個數字的向量,使得出現在相似的上下文中的單詞具有彼此接近的向量。在連續的單詞模型中,目標是能夠使用圍繞特定單詞的上下文并預測特定單詞。
我們通過在一個大的語料庫中采取大量的句子來做到這一點,每當我們看到一個單詞時,我們就提取周圍的單詞。 然后,我們將上下文單詞輸入到一個神經網絡,并預測在這個上下文中間的單詞。
當我們有成千上萬個這樣的上下文單詞和中間詞時,我們就有一個神經網絡數據集的實例。 我們訓練神經網絡,最后編碼的隱藏層輸出表示了特定單詞的嵌入。 恰巧,當我們對大量的句子進行訓練時,類似語境中的單詞得到相似的向量。
10、遷移學習
讓我們想一下如何在CNN中處理一張圖片。假設有一張圖片,你對它進行卷積處理,然后你得到的輸出是像素的組合,我們姑且稱之為“邊”吧。我們再次使用卷積,這時候你得到的輸出將是邊的組合,我們稱之為“線”。如果再次使用卷積,那么你將得到線的組合,等等。
每一層都是在尋找相應的特定模式。你的神經網絡最后一層一般會給出非常特定的模式。也許你在處理ImageNet,你的網絡最后一層可能是在找孩子、狗或飛機或別的任何東西。如果你向前兩層看,網絡可能是在找眼睛、耳朵、嘴巴或者輪子。
深度卷積神經網絡中的每一層的深入都是在構建越來越高層次的特征表示。最后兩層會產生你輸入模型的數據中的特定模式。換句話說,早期的層提取的特征則廣泛得多,在提取的大量的類中有很多簡單的模式。
遷移學習就是當你用一個數據集訓練CNN時,砍掉最后的一(些)層,再用另一個不同的數據集重新訓練最后一(些)層的模型。直觀地說,你在重新訓練模型來識別不同的高級層次特征。作為結果,訓練時間大幅減少。所以當你沒有足夠的數據或者訓練的資源時,遷移學習是非常有用的一個工具。
這篇文章只是展示了這些方法的一般概述。我建議閱讀下面這些文章以獲得對這些概念更詳細的解釋:
Andrew Beam's “Deep Learning 101”
http://beamandrew.github.io/deeplearning/2017/02/23/deep_learning_101_part1.html
Andrey Kurenkov's “A Brief History of Neural Nets and Deep Learning”
http://www.andreykurenkov.com/writing/a-brief-history-of-neural-nets-and-deep-learning/
Adit Deshpande's “A Beginner’s Guide to Understanding Convolutional Neural Networks”
https://adeshpande3.github.io/adeshpande3.github.io/A-Beginner%27s-Guide-To-Understanding-Convolutional-Neural-Networks/
Chris Olah's “Understanding LSTM Networks”
http://colah.github.io/posts/2015-08-Understanding-LSTMs/
Algobean's “Artificial Neural Networks”
https://algobeans.com/2016/03/13/how-do-computers-recognise-handwriting-using-artificial-neural-networks/
Andrej Karpathy's “The Unreasonable Effectiveness of Recurrent Neural Networks”
http://karpathy.github.io/2015/05/21/rnn-effectiveness/
深度學習非常注重技術,而對每一個新的想法卻沒有太多具體的解釋。大多數新的idea只是用實驗結果來證明它們的工作。深度學習就像玩樂高,掌握它有一定的挑戰性,但是入門還是很容易的。
熱愛的劇本是怎樣的?
大家好,很高興能回答這個問題!關于《親愛的,熱愛的》這部劇呢!小編個人去看了前面幾集感覺還好,這部劇是由李青蓉,項旭晶執導,由楊紫,李現,李鴻其,王真兒,李澤峰,姜珮瑤,孔琳,王策,梁愛琪等主演。胡一天特別演出,秦沛特邀出演,王樂君友情出演的一部青春勵志言情劇。
該劇根據墨寶非寶小說《蜜汁燉魷魚》改編,講述了軟萌少女佟年對熱血青年韓商言的一見鐘情,二人在相處過程中的甜蜜碰撞,上演了一場高智商與高情商的甜萌夢幻愛情故事。
好了,今天就介紹這么多啦!喜歡的小伙伴們可以在愛奇藝跟騰訊視頻觀看,謝謝支持
2020年Python趨勢解讀?
相對于很多想轉行或者0基礎的程序員來說,Python行業發展前景絕對是關鍵性問題。畢竟這個關系到未來的就業,實際的收入,甚至決定了你的職業發展方向。而且Python對于web端的網站建設以及人工智能的發展,也有重大的加持作用。眾所周知,我們熟悉的豆瓣便是用Python搭建的,Facebook也是扎克一個人用Python搗騰出來的,后來的Twitter也是Python寫的,實際Python是國外包括Google在內等大公司使用的主要語言。那么問題來了,到底Python前景如何?
一. 0基礎入行Python容易出現哪些問題? Python主要應用領域有哪些?
1.web開發。 Python經常被用于web開發。比如,通過mod_wsgi模塊,Apache可以運行用Python編寫的web程序。一些web框架,可以讓程序員輕松地開發和管理復雜的web程序。
2.游戲編程。Python在很早的時候就是一種游戲編程的輔助工具。在星球大戰中扮演了重要的角色。目前,通過Python完全可以編寫出非常棒的游戲程序。
3.網絡爬蟲。說到使用編程語言編寫網絡爬蟲,就不得不提到Python的簡便,高效和強大了。在幾年之前,大多數網絡爬蟲還是使用java進行編寫的,但是隨著Python生態的不斷壯大,其簡潔的語法搭配強大的功能,使得Python在編寫網絡爬蟲有著得天獨厚的優勢。
4.數據分析。數據分析也是隨著大數據的概念再次興起的一個領域。有了大量的數據,自然需要對其進行數據清理,數據提取和數據分析。在科學計算和數據分析領域,Python一直沒有缺席。在這些方面都有非常成熟的第三模塊和活躍的社區,使Python成為數據處理任務的一個重要解決方案。
5,人工智能與機器學習。人工智能是現在非常火的一個方向,Ai熱潮讓Python語言的未來充滿了無限的潛力。現在釋放出來的幾個非常有影響力的Ai框架,大多是Python的實現!機器學習,尤其是現在火爆的深度學習,其工具框架大都提供了Python接口。Python在科學計算機領域一直有著較好的聲譽,其簡潔清晰的語法以及豐富的計算工具,深受此領域開發者喜愛! 其實除此之外,還有很多領域都有Python的身影,比如網絡安全,滲透測試,自動化運維,等等。
二. 2020年Python行業有怎樣的優勢?
1.編程語言流行指數(PYPL)公布的7,8月份中可見,Python蟬聯第一,走上衛冕的道路!
2.從IEEE Spectrum在9月份發布的2019年年度編程語言排行榜中清楚的看到“Python穩居榜首連續奪冠3年” Python的火,有目共睹。Python陸續登上了IEEE,PYPL排行榜單之首!在最受歡迎語言排行榜上,Python的語法從去年開始就借助人工智能持續上升,現在它已經成為了第一名。其實國外Python的使用率非常普及,但在國內Python是最近幾年才火起來,因此Python正處于快速上升期,市場對于Python開發人才的需求急劇增加。
三,學幾個月就能找到10K的工作?月薪8K-10K,這已經是一線城市的普遍程序員基本標準了!如果找到的是優質的學校學習,可能拿到的還遠遠不止這個薪資。我擔心的不是你們入行之后起始拿不到這樣的薪資,而是擔心一直處于這個階段。見過太多的人卡在這個瓶頸期,一去分析,要么說是自己的學歷限制,要么是說自己的年齡限制,要么是說自己的技術水平限制,這還不是給自己不去學習的理由和借口
總結
1.說真的,AI熱潮讓Python語言的未來充滿了無限的潛力,人才缺口巨大,就業機會多,具有系統知識技能體系的,會全棧的缺口更大。
2,Python語言簡潔友好,0基礎入門并不難,大專學歷都能很快學好技術了。
以上就是關于編程冠軍游戲規則和如何學習人工智能的相關問題解答,希望對你有所幫助。