【Yoshua Bengio 親自解答】機器學習 81 個問題及答案(最全收錄)

本文轉自:http://mp.weixin.qq.com/s?__biz=MzI3MTA0MTk1MA==&mid=401958262&idx=1&sn=707f228cf5779a31f0933af903516ba6&scene=1&srcid=0121zzdeFPtgoRoEviZ3LZDG#rd

譯者:張巨巖 ?王婉婷 ?李宏菲 ?戴秋池


這是?Quora 的最新節目,針對特定話題進行系列的問答。如果你不了解 Quora,可以把它看作美國版的知乎,不過里面大咖云集,奧巴馬、Elon Musk、Bill Gates 都會在上面回答問題。?


這是針對特定話題的問答系列,而有什么能比機器學習更適合作為開頭的第一個話題呢?機器學習無疑是今天最炙手可熱的技術之一,在過去幾年間實現了深度學習等許多進展,而許多企業也將注意力和資源投向了這一領域。


這個 Quora 機器學習問答系列將會邀請眾多這個領域的大神來答疑解惑。


這次參加的是?Yoshua Bengio電腦科學家,畢業于麥吉爾大學,在MIT和AT&T貝爾實驗室做過博士后研究員,自1993年之后就是蒙特利爾大學任教,與 Yann LeCun、 Geoffrey Hinton并稱為“深度學習三巨頭”,也是神經網絡復興的主要的三個發起人之一,在預訓練問題、為自動編碼器降噪等自動編碼器的結構問題和生成式模型等等領域做出重大貢獻。他早先的一篇關于語言概率模型的論文開創了神經網絡做語言模型的先河,啟發了一系列關于 NLP 的文章,進而在工業界產生重大影響。此外,他的小組開發了 Theano 平臺。


現在仍然在完善嘉賓名單,不過已經有另外6位也確認了會參加這次活動。


包括:


吳恩達


百度首席科學家,斯坦福大學計算機科學系和電子工程系副教授,人工智能實驗室主任。吳恩達是人工智能和機器學習領域國際上最權威的學者之一,同時也是在線教育平臺Coursera的聯合創始人。曾與谷歌頂級工程師合作建立全球最大的“神經網絡”——“谷歌大腦”。


2014年5月16日,吳恩達加入百度,擔任百度公司首席科學家,負責百度研究院的領導工作,尤其是Baidu Brain計劃。


Pedro Domingos


Pedro Domingos是華盛頓大學的教授,他是機器學習領域的領頭研究者,并且因研究出能夠進行不確定推理的馬爾可夫邏輯網絡而著名。Domingos 獲得了里斯本技術大學的本科和碩士學位,然后在加利福尼亞大學爾灣分校拿到了碩士和博士學位。在IST做了兩年的助理教授后。它與1999年加入華盛頓大學并且現在是一名教授。


Kevin Murphy


谷歌總部研究科學家,在谷歌研究人工智能、機器學習、計算機視覺與自然語言理解。他于2011年加入谷歌,此前是加拿大溫哥華英屬哥倫比亞大學的計算機科學和統計學終生副教授。他已發表80多篇會議或期刊論文,是《機器學習:概率視角》的作者,該教材長達1100頁,由麻省理工出版社2012年出版,并獲得2013 DeGroot 統計科學最佳書籍獎。?


Isabelle Guyon


咨詢公司ClopiNet(為模式識別、機器學習、統計數據分析、以及數據挖掘提供咨詢服務)的創始人兼總裁,紐約大學健康信息學和生物信息學中心(CHIBI)客座教授。她在機器學習領域是國際知名的學者,與Drs Vapnick和Boser一起發明了核SVM分類器,也發明了基于SVM的特征選擇方法RFE。


Alex Smola


卡耐基梅隆大學教授,Marianas Lab 公司的 CEO。研究方向包括以下幾個方面:


算法的可擴展性: 這意味著推動算法達到互聯網一般的規模,使的他們在不同機器分布,設計出融合和修改模型來適應這些要求。


Kernels方法是線性方法非線性化和非參數畫的有效手段。我的研究興趣包括支持向量機(SVM),高斯過程和條件隨機場。


統計建模: 貝葉斯非參數是解決許多建模問題的好方法。很多時候綜合運用Kernels方法和可擴展性可以得到讓人滿意的方案。


Thorsten Joachims


康奈爾大學計算機科學系和信息科學系教授。他于2001年完成博士學位后加入該系。主要研究方向是機器學習、支持向量機、數據學習理論、文本分類、文本挖掘等。他是?ACM Fellow, AAAI Fellow 和 Humboldt Fellow。


我們非常期待你能提出問題、參與這個活動,也非常激動于能夠為分享這個奇妙的領域的知識做出貢獻。


論文下載


回復?0121?按照本文中標注的序號如Q1a,Q1b來下載相應的論文


以下是81個問題:


Q1:在理解深度學習工作原理的道路上,我們已經前進了多遠?

與有些人的想法相反,我相信我們對于深度學習的基礎已經有了不錯的基本理解,例如:

我們理解了卷積結構和遞歸結構的分布式表征、深度、以及元素與函數空間中的偏好(或者更通俗的說法是,先驗,priors)相對應,并且我們有理論來解釋為何其中一些偏好可以帶來重要的(有時候是指數級增長的)統計優勢(這意味著可以用更少的數據達到相似的準確度);我的書中有更多的對于最近一些論文的詳細描述,我最喜歡的一篇是NIPS?2014的“關于深度神經網絡線性區域的數量(On?the?Number?of?Linear?Regions?of?Deep?Neural?Networks)”(Q1a)。過去和現在,研究人員對于各種深度學習模型的解釋力也做了許多工作。

我們更好地理解了為什么訓練深度網絡時涉及到的優化問題可能并不像我們先前以為的那樣棘手,在某種意義上來說,絕大多數的局部最小值可能實際上都與非常好的解決方案相對應。這個問題上有兩篇很好的論文:NIPS?2014的“識別和攻擊高維度非凸優化的鞍點問題(Identifying?and?attacking?the?saddle?point?problem?in?high-dimensional?non-convex?optimization)”(Q1b)以及AISTATS?2015的“多層網絡的損失面(The?loss?surface?of?multilayer?networks)”(Q1c)。

不過,當然,我們需要更多更多的理論!許多時候我們都會處于無法理解實驗結果的境地里。

?

Q2:你怎么看強化學習?它是像Yann?LeCun說的那樣,是畫龍點睛的一筆嗎?

如果我們只使用強化信號來引導學習,那么我同意Yann?LeCun的說法,它是畫龍點睛的最后一筆。糟糕的是:當使用的全局強化信號并不是對于特征的已知可微函數時(這種事經常發生),擴大能根據這個信號而訓練的隱藏單元的數量(或是行動維度)就會有嚴重的問題。行動的樣例數量、隨機樣本數量、或是嘗試次數,隨著單元數量的增加,可能不得不至少以線性的速度增長,才能在質量的信度分配方面達到和反向傳播技術差不多的水平。如果行動空間很大,這會是一個很麻煩的問題。然而,就像在Yann提到這件事時說的那樣,我們在做強化學習的時候也應該做非監督式學習。那么它就會變得更具可信度,能夠在大規模的環境下發揮作用。

?

Q3:理解大腦對于理解深度學習來說有多重要?反過來呢?

就像許多早期從事神經網絡研究的人(包括我的同事Geoff?Hinton和Yann?LeCun)一樣,我相信,當我們思考我們對于大腦已經知道了什么的時候,我們會有不錯的機會來從中學習一些對于搭建AI來說有用的東西,并且這一點隨著神經科學家們收集了越來越多的大腦數據而變得越來越確定。這個信念與相反的想法也是有聯系的——為了真正理解為何大腦讓我們擁有智能,我們需要對于大腦中發生的事構建一個“機器的學習”的解釋,也就是說,搭建一個計算的、數學的模型來解釋我們的大腦是怎樣學習如此復雜的東西、又怎樣表現出如此成功的信度分配的。為了驗證這個解釋,我們應該能夠運行一種機器學習算法,它擁有從神經生物學中提取出來的基本原則,但它沒有必要理解這些原則(但是可能有必要將這些原則在它的“大腦”中實現,或是為它提供一些我們與生俱來的知識)。就我所知的而言,我們對于大腦怎樣做一些反向傳播技術做得很好的事情還沒有一個可信的機器學習解釋——也就是說,還沒有明白,腦內神經元突觸應該怎樣產生變化,才能讓作為一個整體的大腦對于世界有更好的理解、做出更好的行為。這是這些日子經常在我腦海中徘徊不去的話題之一。

?

Q4:有沒有深度學習永遠不能學會的東西?

這取決于你說的深度學習指什么。如果你指的是現在我們知道的算法,那么答案很有可能是“是的”。但是,毫無疑問,隨著這個領域的研究不斷探索,深度學習還在繼續演化,很明顯深度學習的應用范圍有不斷擴大的趨勢。神經網絡曾經在模式識別問題上非常成功,音素識別和物體識別都是很好的例子。然而,我們可以看到越來越多神經網絡方面的工作正在靠近傳統的AI領域,比如推理、知識表征、以及操作符號數據。我相信,這些近期的工作只不過是冰山一角,但是當然我的手里并沒有水晶球來做預言。如果我們未來對于深度學習的定義中,包括了以受神經啟發的算法來復制所有人類認知能力的能力,那么“這個領域中沒有深度學習學不會的事情”的假設就是相當合理的。不過,到時候,可能會有一些人類永遠不能學會的任務;對于這些任務,很容易得出結論:沒有機器能完美地完成這些任務,因為用來訓練的樣本數量太局限了。

?

Q5:你對于Kaggle和其他機器學習競賽有什么看法?

就像許多其他東西一樣,適量的機器學習競賽是很好的。激勵一些愿意與人競爭的學生(特別是新學生)是一件很棒的事。這讓他們真正地學習如何操作機器學習,只讀論文你是學不到這些的。基準測試也扮演著重要的角色,讓我們的注意力能集中到超越此前最新技術的全新方法上。但是它們不應該被用來作為拋棄那些敗于基準測試的研究的理由。如果有什么東西在一個基準測試上表現很好,這可能意味著我們應該向它投以一些關注,但是相反的推論卻并不正確。你可能有一個偉大的想法,但是你做出的方法現在表現得卻不是很好,因為有一個討厭的細節問題壓抑了它的表現——而這可能在下一年就能被修正過來。這些日子,機器學習評論者們對于實驗結果的比較被賦予了過多的重要性。我相信這是某種懶惰。查閱比較結果的表格的確比在實際上嘗試理解論文中的思想要簡單得多,局限在它給出的可能性里也的確更為輕松。

?

Q6:深度學習研究將去往何方?

研究從定義上來說就是在不斷探索的,這意味著(a)我們不知道什么能起效,以及(b)我們需要探索許多途徑,我們需要整個科學社區在研究方向上有很大的差異性。所以我只能告訴你我目前的直覺,我在哪些地方看到吸引了我直覺的重要挑戰和機遇。這里是其中的一些:

非監督式學習是關鍵,我們現在的做法還并不正確(我和其他人在這一方面寫過、說過很多觀點試圖糾正)

深度學習研究可能會繼續擴張,從原本的傳統模式識別任務擴張到AI的全部任務,包括符號操作、記憶、規劃和推理。這對于完整地理解自然語言和與人對話(也就是說,通過圖靈測試)來說將會非常重要。相似的是,我們見證著深度學習正在延伸到強化學習、控制、以及機器人學的領域,而這只不過是一個開始。

對于AI,我們可能仍然需要再獲得許多知識,更好地理解大腦并嘗試找到大腦運作的機器學習解釋。

最大似然可以加以改進,當在復雜的高維度領域中學習時(非監督式學習和結構化輸出情景中興起的情況)它不一定是最佳的目標。

基于深度學習的AI(不只是消費者產品)將會很大地受益于計算力的大幅提高,這可能意味著出現專門的硬件;這是因為,AI需要大量關于世界的知識(然后對它們進行推理),這就需要用非常大量的數據來訓練大型模型,這一切都需要比我們現在使用的高得多的計算力。

其他見我對于Q12“開放的研究領域”問題的答案。

?

Q7:2015年你讀過的哪一篇機器學習研究論文最讓你感到激動?

沒有哪一篇能夠完全勝過其他任何論文,而我意識到了跟人們說“不同的研究員會對不同的科學貢獻印象深刻”,所以我對于如下進展的選取是非常主觀的:

批量正態化的論文很激動人心,因為它已經對于訓練無數架構都產生了影響,并且已經被作為標準來采用。

梯型網絡的論文很激動人心,因為它讓非監督式學習的想法重獲新生(文中提到的是特別有趣的堆疊式消噪自動編碼器),能夠與直白的監督式學習能夠共同競爭——特別是在半監督式的情境中。

今年,生成式對抗網絡——LAPGAN和DCGAN——的論文,通過讓人印象深刻的方式、真正地提高了對于圖像的生成式建模的標準,瞬間讓這種方法脫穎而出,為非監督式學習在去年的快速進展貢獻良多。它們能與另一個基于變分自動編碼器的深度生成式建模——包括去年早些時候那篇讓人印象深刻的DRAW論文——相媲美。

去年,有不計其數的論文用了基于內容的注意力機制。我看著它從我們的使用注意力機制的神經機器翻譯開始,之后是神經圖靈機(再之后是端到端記憶網絡),還有許多對于這種處理方式激動人心的用法——比如生成對于圖片的描述和菜做數據結構(我特別喜歡Pointer網絡和其他關于可微數據結構操作的論文,包括堆棧、序列、教機器閱讀和理解等等)。所以這種架構的設備已經到來…

還有許多其他的我不能準確地評價的論文…

?

Q8:一個人怎樣才能開始機器學習?/對于一個熟悉機器學習基本概念的人來說,開始接觸深度學習時有什么不錯的資源?

首先你需要在數學和計算機科學方面有適當的基礎。深度學習方面,你可以看看MIT出版社的《深度學習》(現在可以在線閱讀,最終MIT出版社會將它印刷成冊)第1部分,重溫一下數學和計算機科學的知識、或是看一下數學和計算機科學中哪些領域與深度學習最有關系。然后你需要了解一些機器學習方面的知識(有一些不錯的書,比如Chris?Bishop寫的和Kevin?Murphy寫的,視頻的話比如有吳恩達的coursera課程和Hugo?Larochelle的神經網絡授課視頻,你也可以從《深度學習》這本書的第5章中獲得許多基本知識的總結)。然后你需要開始練習,也就是說,親手編寫一些學習算法、用數據來訓練它們——比如說,嘗試參加一些Kaggle競賽。試著成為優化超參數和選擇恰當模型方面的專家吧。同時,繼續保持閱讀。如果你對于深度學習感興趣,我的書《深度學習》中第3章將會為你使用大多數常見的算法打下基礎。到那時,你應該有了足夠的背景知識、能夠以穩定的頻率來閱讀勾起你興趣的論文了。

自我推銷真是非常厚臉皮的一件事,但是我們真的為這本書做了許多努力…?Ian?Goodfellow、Aaron?Courville和我寫了一本為你們準備的書)

它叫做《深度學習》,應該很快就會出現在市面上,不過你已經可以在網站上(http://www.deeplearningbook.org/)閱讀所有的草稿了。

?

Q9:你怎么看OpenAI?

我覺得在我所在的社區中有另一個玩家加入是一件很棒的事,它在市場和研究人員的文化兩方面的影響力進一步推動著業界實驗室轉向重視長遠的目標,讓基礎研究不只由學界來做。我強烈地相信,如果能以幾十年的度量來考慮,如果我們對于短期目標沒有那么關注、沒有那么貪婪(試圖立刻利用起來賺錢),我們本來是可以在探索AI的道路上走到更遠的地方的。

?

Q10:目前對于深度學習的炒作是否言過其實?

如果它是炒作,它就會夸大實際情況。這種夸張是存在,我見到過。當有人認為人工智能的研究比實際情況更加接近人類表現時,這就是炒作,而這種想法通常是依據人們在電影或科幻作品中見到的AI場景而得出的心理印象。

在我的生涯中,我經常會覺得,通常情況下,人類很貪婪。我們在短期目標中會花費很多精力,如果我們在長期目標中持續這種狀態的話,我們會收獲更多。而這意味著要接受很多事實:在AI領域還有很多根本性挑戰;我們不知道還要用多久才能解決這些挑戰(我們也有可能永遠無法成功解決)。我感覺人類有一種存在于本性中的傾向:更傾向于“利用”知識,而非“探索”收集更多的知識。這種傾向對于我們的祖先來說是很有意義的,因為他們每天都面臨危險。于是成功存活下來就變成了一種短期顧慮。公司想要快速賺錢。投資人對它也有需求。政府官員想要在其四年任期結束之前加快經濟發展,而且他們也受到公司和非常富有的人的影響而被敗壞,進而他們根本不在乎這對于人們的長期回報。學術界應該擔負起擔憂長遠未來的責任,但是他們經常被卷入到政府和公司的短期想法中(他們為研究提供資金),或者陷入——“出版或死亡”和“短期增加研究強度以提高基準測試的表現”——的邏輯中而無法自拔。

這即是說,沒有被夸大的是:深度學習已經有很好的表現(經過適當的設計并得到所需的數據后),而且也有可能被轉成重大經濟影響和增長。我們可能在某些非常有限的領域中找到了接近人類表現的方式,或者說,在之前技術基礎上提升很多以至于有非常明顯的經濟價值。但是這距離人類級別的智能還非常遙遠。

?

Q11:今年(2016)會有深度學習夏令營嗎?


描述:Yoshua?Bengio、Roland?Memisevic和Yann?LeCun2015年在蒙特利爾舉辦過一個深度學習夏令營。在蒙特利奧或其他地方會有相似的事情發生嗎?

在2016年8月應該會有。靜待通知。


Q12:在深度學習方面有哪些開放的研究領域?

這補充了之前的Q5。

每個研究人員對此都有看法,這很好。這里是我的想法:

非監督學習真的會發揮巨大作用

生成模型會根據一系列變異度很大的自然圖像和聲音來生成簡潔的圖像和聲音

半監督學習會發揮作用,即使被標記的數據集不微小;

學習數據到空間的雙向轉換方式,空間中的變量是相互糾纏的(或者大部分獨 立的)

將(迭代式)推理帶入到深度學習中來處理隱性變量的非因子后驗概率

在我們的模型中引入更多推理能力

大規模自然語言理解和知識表征

序列數據長距離相關性模型并讓學習器在多時間尺度上發現框架性的表征方式

更好地理解(并修補)有時會出現的優化問題(例如,在非監督學習或長距離 ? 相關性遞歸網絡中)

訓練將計劃(能夠理解假設分析場景,也許隨機地通過一個生成式組件)作 ? 為一部分學習步驟的模型(而且還能做決定)

將強化學習擴展到較大的活動空間中

最大似然定理有一些已知的不足(例如在訓練和測試情況下有錯配現 ? ? ? ? 象),而且我們需要繞過它們(也許連最大似然定理一起拋棄)

彌合深度學習和生物學之前的空白

加速理論理解深度學習(優化問題是一方面,表征或統計方面也需要更多的理 ?論)

研究特殊的硬件以支持離線訓練模型來開發消費者產品,但這從科學的角度看可能更重要,訓練更大的模型來捕捉更多的知識,進而為人類級別的AI研究開辟道路

很多應用還欠開發,我特別想看到在健康方面的研究工作(如缺失值等特定問 題,還有通過遷移學習利用小型研究數據)。

?

Q13:有了Torch和谷歌發布的TensorFlow對工業的強大支持,你對Theano和其使用壽命的看法是什么?

TensorFlow對Theano有很大的威脅,它們建立在相同的基本想法中,即構建并操作一個計算圖,以符號形式來表征數字計算。然而,TensorFlow需要更多的工作,而且谷歌看起來很想提高它,并讓它成為更有用的工具。這要看事情以后的發展,學生和研究人員如何選擇。我對以下兩者感到很自豪:我們Theano的完成情況,和谷歌相似地構建了一些更好的東西,但是Theano對于我來說不是一種信仰。我喜歡對開放而有前瞻性地研究具有高級而靈活的探索能力的工具。

?

Q14:深度學習能像在視覺和語音領域中那樣在自然語言處理領域中取得成功嗎?

我當然相信會這樣!最近幾年的進步暗示了進步幅度會更快。例如在神經機器翻譯中的相關工作,這方面我知道的比較清楚。我認為我們在來年會看到更多,而深度學習也在逐步朝著自然語言理解中存在的諸多根本性挑戰方向發展。

?

Q15:深度學習與機器學習有怎樣的不同?

深度學習是機器學習的一部分。在機器學習中有很多概念和想法,而深度學習是從這個更大集合中抽離出的一部分。很多大學曾有一段時間不再教學深度學習,但是現在,在某些地方,受到關于深度學習的炒作影響后,這種局勢可能會逆轉,而這并不好:學生繼續學習經過幾十年機器學習研究而得出的不同想法和概念是很重要的,這提供了更加廣闊的思路,也為新發現打開大門。

?

Q16:你為什么會在神經網絡(而非其他機器學習領域)上花費很多精力?

自從我研究生的研究后,我就預感神經網絡會再次崛起,這受到了David?Rumelhart和Geoff?Hinton強有力想法的影響。在90年代后期,當機器學習社區開始轉向神經網絡后,這些預感讓我開始探索神經網絡繞過維度詛咒的方式和原因,我當初(現在也)認為是機器學習的關鍵挑戰。這就引出了我和我兄弟Samy的第一篇文章(在1999年NIPS上,《Modeling?High-Dimensional?Discrete?Data?with?Multi-Layer?Neural?Networks》(Q16a)),后來有了更好的工作(依據相同的想法)《neural?language?model》(Q16b)(在2000年NIPS大會上,和Pascal?Vincent一起)。這個工作之后,我將這些想法擴展到連續空間和流形研究中,以及非參數流行方法是如何受到特定形式的維度詛咒的干擾。這最終引出2005年NIPS的文章《Non-Local?Manifold?Tangent?Learning》(Q16c)和2005年NIPS的文章《The?Curse?of?Highly?Variable?Functions?for?Local?Kernel?Machines》(Q16d)(和Olivier?Delalleau、Nicolas?Le?Roux一起)。這一系列思想軌跡刺激了人們研究——利用深度來增加繞過維度詛咒的可能性——的積極性,最終在2006年的NIPS上有了這篇文章《Greedy?Layer-Wise?Training?of?Deep?Networks》(Q16e),和Hugo?Larochelle一起用RBMs和自動編碼器來訓練深度網絡,這一工作受到Geoff?Hinton早期對RBMs研究的啟發。有了Geoff小組和Yann小組那年的文章,終于有了第一篇文章,表明可以訓練深層網絡(實際上比淺層網絡性能好),這也是對深度的強調和神經網絡重生的開端…

?

Q17:一個沒有PhD學位(但是從技術上來說)自學過ML的人如何向你這樣的人證明他已經足夠優秀來為你工作?

見我回答的《對于正在進入機器學習領域的年輕研究人員,你有什么建議?》(Q18)和《對于一個熟悉機器學習基本概念的人來說,那些是開始學習深度學習的好資源?》和《某人應該如何開始學習機器學習?》

?

Q18:對于正在進入機器學習領域的年輕研究人員,你有什么建議?

確定你在數學和計算機方面經過了很強的訓練(包括,實踐部分,如編程)。讀書,讀很多文獻,但這還不夠:你需要發展你的直觀理解,通過以下方式:(1)自己編寫很多學習算法,如嘗試重現文獻中的方法;(2)例如參加比賽或者在重現文獻中方法后進一步改善結果,從而學會去調試超參數(hyper-parameters)和探索(框架、目的函數等等)變異性。接著找人一起做頭腦風暴,在探索和測試新創意時分享工作負擔。和已有的小組一起工作是一種理想方式,或者招募自己的學生與你一起工作,如果你是一個教職人員的話。


Q19:非監督深度學習預訓練有用嗎?何時有用?

非監督預訓練在自然語言處理中使用得很頻繁,例如當我們使用非常大的文本語料庫來預訓練詞匯的表征時,接著在小型標記好的數據集上使用或微調這些預訓練表征。然而,我們一直(從2008年和Hugo?Larochelle?一起寫作的ICML論文《Classification?using?Discriminative?Restricted?Boltzmann?Machines》開始)(Q19a)知道的是,結合監督式和非監督式方法來共同訓練參數會更好。最近這類方法的成功應用是《Ladder?Network》(Q19b)。

?

Q20:AI對人類有生存威脅嗎?

我們未來某天可能實現的這類能夠達到甚至超過人類表現的AI有很多不確定性。即使我站在樂觀主義的一方(因為這種不確定性),我們不能否認存在這種可能:我們不想發生的事情發生了。這就是我簽下了未來生活公開信以開發一個穩定而有益的AI的原因。

?

然而,請記住這種潛在威脅現在還離我們很遠。媒體總喜歡夸大其詞來吸引注意力。這會妨礙AI研究。相反的,我們應該鼓勵相應領域的研究來更好的理解這些問題,進而如果某天出現一些事情要具體處理時,我們也能更好的準備并開發對人類來說更安全的AI。

?

談到這里,我相信將媒體的注意力從AI帶來的長遠角度科幻性質的恐懼轉移到短期更具體的政治經濟問題上是很重要的。但我們應該提前考慮這些問題,而不是等到人類受到傷害(例如,失去工作)雖然會有少數幸運的人會變得超級富有而且有很大的權力。我們整體需要對如何利用AI帶來的進步做出英明抉擇,為全體利益著想而非少數。為了適應科學技術帶給我們愈來愈強大的力量,叢林法則是不適用的:我們需要在個體和整體上都有英明的遠見,這不僅是為了我們,也為了我們的后代。

?

Q21:你的書何時會上市嗎?

現在基本要看MIT出版社。內容方面已經完工了(而且網上也有。)我們正在等評論家的反饋(估計一周或一個月吧),接著MIT出版社可能需要一些時間安排出版的事情。可能要幾個月,總體來看,一年之內很可能完工,之后會郵寄。如果你找到打印錯誤、錯誤或者缺失重要部分,現在是你為這本提出寶貴意見的絕佳機會!

?

Q22:你對只用一個學習算法解決問題是怎么看的?

這是一個很有意思的想法,而且有點像皮質的功能,因為如果有必要的話,同樣的皮質部分可以做其他部分的工作(即使每個區域由于初期的結構部署而被安排好做特定工作)。這很有意思,因為如果存在一個核心學習算法(雖然可能涉及到一些概念)完成多種任務的話,那么這種算法很可能很強大而且很實用,更不用提還能提供有用的科學觀點。我認為,它足以有趣以至于不找尋它的人是不正常的,萬一它存在呢。然而,大腦除了皮質之外,還存在著其他部分,例如海馬區,有可能根據不同的算法學習并與皮質交流,近期記憶網絡和神經圖靈機的相關工作也暗示我們可以受益于多種不同類型的組件。另外,大腦也很有可能結合了非監督學習和強化學習(后者有研究透徹的生物學證據)。

?

Q23:在學術界做深度學習研究與在產業界相比有哪些好處和挑戰?(為什么你是仍堅守在學術領域的為數不多的深度學習研究人員之一?)

據我所知:

好處:

為大眾的利益而工作的滿足感,為人類,而不是財富占有者或者投資人,在更加開放的環境中工作而沒有專利使用限制的困擾

?身邊會有很多聰明的研究生和博士后,下一代研究人員而且也會影響他們

?挑戰:

?不得不花很多時間寫方案來獲得資金、在委員會中任職等

?只有訪問公開數據集的權利(但我認為這其中有很多有趣的數據集)

?沒有大的工程團隊來開發大型系統

?沒有很多計算資源

然而,我必須承認我在后兩件事情上做的很好,這要感謝我當前接收到的(經常從大學那里)慷慨的資金和贊助。我很慶幸我的大學高度珍視我的存在而且只限定我每年一次(除了學術休假)教學研究生課程,在過去的15年中。當然這些只是我幸運地得到了這樣的環境。

?

Q24:你曾說過當前機器學習算法的主要限制是它們學習需要太多的數據。你能詳細說明這一點嗎?

在孩子的前兩年生活中(甚至在學會語言之前),他們本質上是通過看沒有被標記的數據學習。孩子們在童年看到的自然語言比現在訓練得出的最好的語音識別器和機器翻譯系統所需的文本數量要少得多。這種差距是指數級別的。為什么?人們似乎能夠更好的利用他們能夠得到的較少的數據集,而且我相信這是因為他們自己對周圍的世界建立了一個能夠捕捉因果關系的模型。這讓我們能夠預測在某些假定條件下什么會發生,即使這些條件與我們以往經歷過的條件有明顯的不同。我從來沒有真實經歷過車禍(例如),但是我的大腦可以充分的模擬它(并預見結果),進而我可以自動的做出計劃來規避這樣的不幸。所以未來還有很多事情需要我們發掘。

?

Q25:如何將深度學習應用到時間序列預測上?

這有很多種可能性,但我會使用最先進的遞歸網絡(使用門控單元(gated?units)和很多層)在每個時間步中做出預測(這有利于未來垂直方面的一些應用)。接著,用下一個觀測來更新RNN從而做出下一個預測。你可以預測一個值,可以是關于那個值的不確定性(例如用高斯對數似然),或者一個復雜密度(例如用混合模型),正如這篇文章《Generating?Sequences?With?Recurrent?Neural?Networks》(Q25a)。你也可以預測多個值,甚至是關于它的未來不確定性軌跡(通過預測關于軌跡點的一些協方差),正如這篇文章《Forecasting?Commodity?Contract?Spreads?with?Gaussian?Process》(Q25b)。如果你想要一個更穩定的預測器,你可以使用絕對值(中位數)或者分位數預測器,例如這篇文章《Robust?Regression?with?Asymmetric?Heavy-Tail?Noise?Distributions》(Q25c)。

?

Q26:為什么非監督學習很重要?深度學習在其中起什么作用?

深度學習其實是關于學習表征方式,這意味著學習有益于捕捉我們所關注的統計相關性的中間概念,特征或隱性變量。這些相關性來自于從輸入變量到輸出變量的監督學習過程,或在變量的任何子集之間的非監督學習過程。通常來說,監督學習用于教電腦學會對解決特定任務很重要的中間概念(例如類別)。然而,我們看到監督式深層網絡在它們的網絡層中可以發掘出有意義的中間概念。非監督學習很相似,不同在于我們讓模型捕捉了所有變量之間可能的相關性,不區別輸入和輸出。用監督學習來完成AI可能需要讓電腦從所有與這些概念有關的數據集中學會所有對我們很重要的概念。這不是人類的學習方式:是的,由于語言的存在,我們得到了一些闡明新概念的示例,但是我們觀察到的很多東西并沒有明確的標記,至少一開始是這樣的。孩子們并沒有讓大人告訴他們每幅圖的每個像素是什么,或者每幅圖中的物體是什么,什么是語法結果,每句話中的每個單詞的確切意思是什么。我們從簡單的觀察中提取出大部分信息(可能通過“動作—感知”循環),而這就是非監督學習的基本原理。我們希望深度非監督學習將能夠發現(可能需要很少的標記數據的幫助)所有的概念和事情發生的起因(一些被直接標記好,一些沒有標記),進而解釋我們看到的現象。所以我相信這個方向上的進步對實現AI有本質性推動作用。而且我們都是這么想的:)

如果你仔細想想,科學家正在做非監督學習:觀察世界,想出解釋某種現象的模型,收集更多觀察數據(雖然是有目的的)來測試它們,接著不斷的改進這種解釋世界運行原理的模型。然而我們確實從教育中得到了提升,因此像《curriculum?learning》(Q26a)文章中的想法也是必需的(正如我們見到過的一些機器學習任務)。

?

Q27:你對Max?Weling的論文《ML和統計是互補的嗎》是如何評價的?ML因為深度學習正在遠離統計學嗎?

Max確實找到了深度學習成功的3個因素:(1)計算力;(2)大型數據集;(3)大型靈活的模型。我會加上一點:(4)明顯的偏向(偏愛函數空間或者貝葉斯方法)。深度網絡受益于一些對底層數據的附加假設,我在深度學習書和很多討論中提到過:多個潛在因子的假設(分布式表征,因果關系),因子組成的假設(深度),(在卷積網絡中)等方差和時間一致性的假設,(在遞歸網絡中的)時間恒定性,等等。雖然前三個因素屬于計算科學領域,但是最后的因素(也可能是最有趣的因素)明顯涉及到統計學的思想。我認同Max的看法:不太可能解釋大型深度學習網絡中億萬計的參數,但是有可能理解這些網絡中直接或間接引入的先驗假設。然而,如果統計師可以接受這些問題中的計算科學成分的話,會很好,就像計算科學家已經接受了機器學習中的統計成分一樣。最后,關于深度學習還有很多理論需要去發現,統計學家明顯可以在其中起到作用。

所以,是的,表面上看深度學習似乎正讓機器學習遠離統計學,但是正像Max所說,他們在未來發展的多個方面可以起到重要作用。

?

Q28:你認為,深度學習未被研究透徹的眾多部分中,哪個是最令人困惑的?

深度學習到處都是迷!看我之前回答《在深度學習方面有哪些開放研究領域?》(Q12)來找深度學習研究方向。

這里是一個研究得很不充分且真的令我疑惑不解的一個例子:

我們可以用一個高效在線算法(不需要儲存我們一生中所有的心理狀態然后倒序播放)在時間中(對于訓練遞歸網絡)達到像反向傳播一樣,或者更好的效果嗎?大腦顯然做到了這一點,但我們沒有任何線索。

?

Q29:神經網絡可以有一個關于它們內在原理的純概率式解釋嗎?

通常情況下,沒有事物真的是簡單而純粹的,但是大部分神經網絡都有一個清晰的概率解釋(事實上,近年來,我在自動編碼器的概率解釋中做出過一些貢獻,和Guillaume?Alain一起)。監督式深度學習只是學習條件概率,然而很多不同類型的非監督學習方法直接或間接地估計了數據生成分布的聯合分布。

然而,它們的工作原理不是概率問題。這涉及了統計問題還有優化問題。


Q30:“機器學習領域最新的重要進展大部分是關于工程和計算能力的”,這句話對嗎?

我不同意這個觀點。我會說,計算能力和數據集的大小是必要的要素。在現代的深度網絡中,有幾個計算要素(ingredient)實際上帶來了不少的不同:修正器(rectifiers,及其變體),丟棄法(dropout),批量正則化,還有某些情況里的半監督式學習和遷移學習。這其中甚至還都沒有說到,由于出現了在十幾二十年前沒有人能想象到的算法,我們在生成式模型方面取得了驚人進展。

?

Q31:你認為傳統的統計學習是否會在不久的將來再次戰勝深度學習(或者任何基于神經網絡的方法)?

神經網絡是統計學習方法。

科學不是戰斗,而是協作。我們都是在彼此的思想上建立自己的思想。科學是一種愛的行動,不是戰爭的行動。一種對于周圍的世界的美麗產生的愛,一種愿意分享和合作的愛。從情感上來說,這使科學成為一種讓人感到高度滿足的活動。

?

Q32:你對于進入機器學習領域的年輕研究者們有什么建議?

確認你在數學和計算機科學領域(包括實際的部分,也就是編程)有扎實的背景。讀書和(大量的)論文,但這還不夠:你需要培養出你的直覺,這可以通過(a)親手編寫相當多的學習算法,比如重現論文中的結果,以及(b)學習怎樣微調超參數以及怎樣探索(架構、對象函數等方面的)變種。然后,找到合作者,你可以與他們一起對想法進行頭腦風暴,并與他們一起分擔探索和測試新想法的工作量。當然與一個已形成的團隊一起工作非常理想,或者如果你是一位大學教師的話,你可以招募你自己的學生,和他們一起進行工作。

?

Q33:一個人要怎么才能想出新的深度學習架構?只是通過試錯嗎?

是,也不是。不是,因為對于一個單純的隨機搜索來說,能起作用的算法的空間太大了(均勻隨機的話,找到好東西的幾率非常小)。是,因為這會是一種高度引導式的隨機探索,就像任何其他科學努力一樣。但請盡量弄清到底發生了什么,這無疑會給你帶來更多的好處。這不僅僅是與在算法的空間中進行搜索有關,它也與在這一旅途上理解更多普適的概念有關。這就是隨機探索中“引導”的那一部分。它不同于只是想勝過基準測試,而且從長遠來看,它對其他人來說會更有用。提出理論來解釋你所看到的現象,然后通過建立一個專門為了打敗這個理論而設計的實驗來進行測試。不斷重復這個過程。這就是科學的歷久彌堅的方法。


?

Q34:你怎么看DeepMind?

那是一個好地方!許多我以前的學生都在那里工作。他們的研究成果很驚人。他們顯然是全球進行深度學習研究(為數不多的)最好的地方之一。而且我喜歡這個想法:Google之類的公司正在向一個與產品并不緊密相連的團隊所作的長遠研究投入如此之多的資金。其他公司(如Facebook)已經在朝著這個方向行進,而現在我們也有了(小得多的)OpenAI。所有這些開放和長期研究投資對科學進步都很有幫助。但我相信這無法取代學術界的作用。

?

Q35:我們什么時候才能看到深度學習的理論背景和數學基礎?

理論一直是神經網絡研究的一個部分。參見我對于《Q1:在理解深度學習工作原理的道路上,我們已經前進了多遠?》的回答。

我覺得我們對于為什么深度學習能發揮作用有了許多根植于理論的洞見,但是我很確定我們還會做到更多!


Q36:在研究預料之外的實驗結果時,比如你覺得某個想法應該會有效、結果在實驗里卻沒有效果,你會用到什么技術??

好吧,通常來說,這要么是一個bug,要么就是更有趣的情況:它證明了你腦海中的模型應該改一改了!你需要變得善于尋找bug(這需要練習),在機器學習中這并不是一件容易的事,因為許多bug仍然會允許及其繼續學習,只不過效果不那么好了。但無論如何,當實驗結果與你的期望不符時,不要無視它!這是一個你應該為之熱切期盼的機會;-)

有時候你腦海中的模型是錯誤的,但是別人可能不覺得你的結果讓他們驚訝,于是你將需要通過交流(可能是寫一篇論文,或者是與其他研究人員探討)來找出錯誤。

我最好的調試工具是我腦海中的模擬系統。讓模型在你的腦海中運轉,越詳細越好,然后試著想象有什么事可能發生。

Q37:如果“深度學習”這種詞語組合不存在的話,你會怎樣稱呼它?

神經網絡也是一個不錯的詞語組合。

?

Q38:深度學習之后機器學習中的“下一個”大事會是什么?

第一,我根本沒有水晶球。第二,據我所知,當我們實現了人類級別的AI后,深度學習的使命就結束了,而我很難預見這之后會發生什么。深度學習為神經網絡帶來了一些想法。隨著時間推移,其他概念也會加入其中,從而一點點向著實現AI方向努力。我真的認為有些想法會歷久彌新。這像是在問“我們研究了過擬合、欠擬合和容量之后,機器學習的下一個大事件是什么?”(過擬合、欠擬合和容量在80年代后期開始盛行。)這些想法永遠不會過時,因為它們非常有用。顯然這類想法,如學習復合函數(深度)的提出(和重要性),會歷久彌新。但單憑其自身無法保證這一點。我們還有很多工作要完成。

?

Q39:你對概率圖模型是怎么看的?

概率圖模型的相關研究給我(和很多其他的深度學習研究人員)提供了一些偉大的洞見。它們是很多非監督學習算法的基礎,也幫助人們理解了那些看起來不像是概率問題的模型(如自動編碼器)。

?

Q40:在自然語言方面,未來的深度學習會有怎樣的發展。

我相信,對于深度學習,自然語言處理是最讓人興奮的研究領域之一。這是一個長期存在的挑戰,而深度學習正試圖解決它們,而且我相信我們這套正確的工具能夠取得巨大進步。

?

Q41:ILSVRC12?,14,15?這三個先進的解決方案分別包含5層,23層,152層的卷積神經網絡。您認為基于深度學習的視覺識別在朝著什么方向發展?

應該注意這樣的數據:如果每一層激活函數更具線性,那么更深的神經網絡實質上不會給你帶來更多東西。我認為基于深度學習的視覺識別技術將會繼續被改善(盡管可能不是在ImageNet這一基準測試上,因為它幾乎達到了人類的水平。)在多變場景下的全景理解還沒有取得任何進展,更別說“理解一個電影了”。從某些方面來說,更好的視覺理解需要更好的AI技術,也即更好的理解世界運行機制的機器,這包括理解人與人之間的交流。

?

Q42:你為什么會對機器學習感興趣?

那是在1986年,我正在為我的計算機理學碩士學位尋找一個研究主題,并且我開始閱讀一些基于神經網絡學習的早期聯結主義論文。我一見鐘情。自那以后,我對其一直很有熱情并且成為它的忠誠信徒。

?

Q43:除了重構輸入數據(例如像是自編碼器這樣的深度神經網絡,其工作原理即是重構輸入數據),還有其它什么任務能夠證明對深度網絡中的無監督學習有用?

許多!

就我們目前知道的就有很多,例如:

在給定其它變量的情況下,預測另一個變量(偽似然函數)

給定其它的情況下,預測多個變量的子集(廣義的偽似然函數)

給定了以某種順序排列的前部分變量,預測下一個變量(完全可視的貝葉斯網絡,自回歸網絡,NADE,生成式循環神經網絡)

給定一個有噪聲的輸入,恢復原始干凈的信號點(去噪過程)

預測輸入信號是來自于數據生成分布還是其他分布(像是一個概率分類器)(對比噪聲估計)

學習一個可逆函數,使其變換分布盡可能是階乘式的。(NICE,并且考慮到近似一個可逆函數,利用變分的自編碼器就有這樣的特性)

學習一個隨機變換,基于此,如果我們多次運用這個隨機變換,我們能夠使我們的模型模型收斂到接近于數據生成分布的輸出。(生成隨機網絡、生成去噪自編碼器、擴散反演=非平衡態熱力學系統)

學習生成分類器不能從訓練樣本中辨別出的樣本(生成對抗網絡)

或者最大化某個概率模型中數據的似然概率

并且我確定我忘記了一些,并且會出現越來越多的基于無監督式學習的模型。

?

Q44:你認為自己將來某一天會在Coursera上開講深度學習課程嗎?

當編寫有關深度學習的書時,我感覺我自己用盡了我全部的精力。我需要回復一些元氣。或者其他人會來教授關于機器學習的網絡公開課,而且他們可能會比我做的更好!最令我感到滿意的感受之一就是看到所有這些聰明的研究者沉浸在深度學習研究中。

?

Q45:你認為NIPS會議取得了多大的成功?

太成功啦!

NIPS委員會正在考慮應該怎樣來應對參會人員的增長。隨著參會人數數量呈指數式地增長,一些像是在每個海報周圍預設多少圍觀人數才合理之類簡單的問題都是不容易得到解決的。

你認為我們應該嘗試多聲道口述?當房間里有數千人時,繼續單聲道口述有意義嗎?為了自己的利益,NIPS是不是太大了呢?同樣的問題之后也在ICML上出現了。

?

Q46:關于統計學習理論,你有什么想法?

統計學習理論是機器學習的部分理論基礎(對深度學習同樣適用)。我們需要用新的和更多的理論來解釋用我們觀察到的今天的學習算法所產生的現象。

?

Q47:你認為利用AI技術能夠捕捉到人類失去理性的行為和思考過程嗎(例如?信任)?

當然。你所謂的非理性即是指“錯的”。可能不能充分適用于這種情況。信任思維是非常理性的。理性于我而言就是:“利用可用的知識,做出正確的決定。”信任,以及其它許多的人類舉動都是非常理性的。如果我們不相信任何人,我們哪里也去不了。最重要的是做對的事情。生物、文化的發展以及我們自己的經歷已經在我們心中對世界建立了一個模型。但是我們沒有意識到它的大部分。理性對于我來說,不是可以用幾句話或者幾個詞就能夠解釋的。它對于我來說就是意味著最優的決策。

?

Q48:基于你以前的工作——不同時間段下的分離的循環神經網絡(1995年),你認為最近的Clockwork?循環神經網絡(Clockwork?RNNs)怎么樣?

它是一篇非常好的論文,但是我認為我們還沒有解決如何學習時間層次的問題。在我1995年NIPS論文上,基于clockwork?RNN(鐘擺循環神經網絡),時間層次結構是固定的。我想看到這樣一個結構:可學習的,動態的(例如,在一個被處理的序列中,在不同的時間點是不一樣的。)

?

Q49:你認為我們擁有一個支持或解釋深度學習原理的理論框架有多重要?

我認為追求更多的關于深度學習的理論研究是一件非常有價值的事。

幾年前,我認為它之所以重要是為了為人們提供便利。現在,實踐結果如此強大,以至于當初的動機已經開始轉移了。將來更好的理論能夠幫助我們建立更好的算法。

?

Q50:在機器學習中解釋一個模型有多重要?

這個問題就像是在問“一個人能夠完全解釋他的每個想法有多重要?”

那當然很好啦,但是對于我們發現人類(或機器)是否一個好伙伴來說,不一定必要的。可解釋性已經被大肆地熱議過了。在使用一個模型前我們真正需要的是對一個訓練模型泛化能力的可靠保證。(這也正是圍繞一個訓練模型不斷計算其測試的錯誤率以及不斷評估其不確定性要達到的目標)。那即是指:我們應該盡我們所能來理解機器學習模型的內部到底是如何工作的,因為只有這樣,才能夠幫助我們排除模型中出現的故障,并且了解到模型的局限性,進而建立更好的模型。


Q51:你認為有可能讓算法從通常被當做是噪音的數據中提取出有用的信息嗎?

只有當其中存在一些潛在統計結構時!(即使我們沒有看到它)

我確定,聽見我說話的貓只是認為我在發出一些有趣的噪音(例如,對于貓來說,當聲音變得響亮或聲調高時,這些噪音才包含信息)。當我聽到一個完全不同的專業人士用各種專業詞匯談論某個話題時,這也很快也會變成噪音。只有當我們構建了合適的模型時,才能把噪音變得有規律,例如,用與眾不同的方式來預測,會承載有用信息。

?

Q52:我們如何讓深度學習在計算能力較低的設備(如手機)上運行?

開發專業硬件,設計相應的學習算法。在我的實驗室中,我們研究在很低的分辨率下且不需要使用任何乘法運算的神經網絡的實現方法。這在很大程度上會減少計算消耗。

?

Q53:和你一起工作有哪些非學術的方式?

我經常和不在我實驗室的人遠程合作(例如在這個星球上的其他本科學生)。

?

Q54:加拿大蒙特利爾有哪些有趣的初創公司?

Imagia、Mantika、Datacratic、?Apstat、?Maluuba(不再是一家初創公司,起源于Waterloo)。

?

Q55:你對哪些有志于PhD項目的學生有哪些意見?

見我之前的回答:What?areas?need?to?be?covered?for?machine?learning?and?deep?learning?in?particular.(深度學習和機器學習方面需要有哪些背景?)

























論文下載


回復?0121?按照本文中標注的序號如Q1a,Q1b來下載相應的論文


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/247142.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/247142.shtml
英文地址,請注明出處:http://en.pswp.cn/news/247142.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Java生鮮電商平臺-SpringCloud微服務架構中網絡請求性能優化與源碼解析

Java生鮮電商平臺-SpringCloud微服務架構中網絡請求性能優化與源碼解析 說明:Java生鮮電商平臺中,由于服務進行了拆分,很多的業務服務導致了請求的網絡延遲與性能消耗,對應的這些問題,我們應該如何進行網絡請求的優化與…

XCode7 創建framework

1.新建一個靜態庫工程. file→ new→ project, 彈出框中選擇iOS→ framework & library中的cocoa touch static library.點擊Next,輸入product name: TestFramework, 點擊Next→ 點擊Create. 2.刪除向導所生成工程中的Target. 點擊工程名→ 點擊TARGETS → 右鍵Delete. …

基礎js逆向練習-登錄密碼破解(js逆向)

練習平臺:逆向賬號密碼 https://login1.scrape.center/ 直接打開平臺,輸入密碼賬號,抓包找到加密的參數攜帶的位置,這邊我們找到的是一個叫token的加密參數,這個參數的攜帶是一個密文 我們首先考慮一下搜索這個加密的…

python之socket

socket套接字 什么叫socket socket是處于應用層與傳輸層之間的抽象層,他是一組操作起來非常簡單的接口(接受數據)此接口接受數據之后,交由操作系統.socket在python中就是一個模塊. socket兩個分類 基于文件類型的套接字家族 套接字家族的名字:AF_UNIX unix一切皆文件…

iOS----JSON解析

在iOS開發中與服務器進行數據交互操作,操作過程中使用最為常見的格式為JSON與XML,其中JSON較為清量,因此本篇blog就講解一下如何在iOS中進行JSON解析。 1.建立HTTP請求 (1)創建URL NSString *URLStr [NSString stringWithFormat:”http:/…

VS中每次改代碼后運行程序不更新,只有重新編譯才生效。

解決方法:將項目移除解決方案,再重新添加進來,即添加->現有項目->選擇.vcxproj文件,即可解決。 轉載于:https://www.cnblogs.com/Gregg/p/11358711.html

socket補充:通信循環、鏈接循環、遠程操作及黏包現象

socket補充:通信循環、鏈接循環、遠程操作及黏包現象 socket通信循環 server端: import socketphone socket.socket(socket.AF_INET,socket.SOCK_STREAM)phone.bind((127.0.0.1,8080))phone.listen(5)conn, client_addr phone.accept() print(conn, cl…

PCA的原理及MATLAB實現

相關文章 PCA的原理及MATLAB實現 UFLDL教程:Exercise:PCA in 2D & PCA and Whitening python-A comparison of various Robust PCA implementations --------&a…

Java生鮮電商平臺-SpringCloud微服務架構中核心要點和實現原理

Java生鮮電商平臺-SpringCloud微服務架構中核心要點和實現原理 說明:Java生鮮電商平臺中,我們將進一步理解微服務架構的核心要點和實現原理,為讀者的實踐提供微服務的設計模式,以期讓微服務在讀者正在工作的項目中起到積極的作用。…

iOS中下載小文件

在iOS中通過網絡下載小文件比如小型圖片等資源,一般在子線程中將數據完全下載完畢,然后在調用block將下載的數據整個部分返回,或者采用同步返回下載數據。 一般采用以下兩種方式: (1)使用GCD將下載操作放…

iOS下載大文件原理解析一

iOS中下載大型文件,需要考慮到占用內存的大小與下載速度(使用多線程),因此本文首先介紹一個原理性下載文件的DEMO。 在下載大型文件中,需要知道下載的進度因此需要使用代理模式,不斷的回調下載進度。 - (…

recv原理、高階版黏包解決方案、基于UDP的socket通信

recv原理、高階版黏包解決方案、基于UDP的socket通信 recv原理 源碼解釋: Receive up to buffersize bytes from the socket. 接收來自socket緩沖區的字節數據, For the optional flags argument, see the Unix manual. 對于這些設置的參數,可…

iOS中下載大型文件的原理解析二

在iOS中下載大型文件,需要使用NSURLConnection 的代理方法: (void)touchesBegan:(NSSet)touches withEvent:(UIEvent *)event { NSURL *url [NSURL URLWithString:”http://d.3987.com/fengj_141112/007.jpg“]; NSURLRequest *request [NSURLReque…

ASP.NET Core Web 應用程序開發期間部署到IIS自定義主機域名并附加到進程調試

想必大家之前在進行ASP.NET Web 應用程序開發期間都有用到過將我們的網站部署到IIS自定義主機域名并附加到進程進行調試。 那我們的ASP.NET Core Web 應用程序又是如何部署到我們的IIS上面進行調試的呢,接下來我們來簡單介紹下: 一、安裝IIS所需的Host擴…

iOS下載大型文件原理解析三

在下載大型文件過程中是可以取消下載的 - (IBAction)download:(UIButton *)sender { // 狀態取反 sender.selected !sender.isSelected; // 斷點續傳 // 斷點下載if (sender.selected) { // 繼續(開始)下載// 1.URLNSURL *url [NSURL URLWithStrin…

HTML文件上傳與下載

文件下載 傳統的文件下載有兩種方法&#xff1a; 使用<a/>標簽&#xff0c;href屬性直接連接到服務器的文件路徑window.location.href"url"這兩種方法效果一樣。但有個很大的問題&#xff0c;如果下載出現異常&#xff08;連接路徑失效、文件不存在、網絡問題等…

NSURLSession的應用

iOS7以后發布了NSURLSession用來替換NSURLConnection&#xff0c;NSURLSession使用方式有以下兩種&#xff1a; 1.block方式 &#xff08;1&#xff09;創建的步驟 獲取單例會話對象 創建URL對象 隱含創建request 創建NSURLSessionDataTask // 1.獲取會話對象 NSURLSess…

ASP.NET Core Web 應用程序系列(一)- 使用ASP.NET Core內置的IoC容器DI進行批量依賴注入(MVC當中應用)...

在正式進入主題之前我們來看下幾個概念&#xff1a; 一、依賴倒置 依賴倒置是編程五大原則之一&#xff0c;即&#xff1a; 1、上層模塊不應該依賴于下層模塊&#xff0c;它們共同依賴于一個抽象。 2、抽象不能依賴于具體&#xff0c;具體依賴于抽象。 其中上層就是指使用者&am…

iOS中XML解析

iOS中XML解析分為兩種實現方式&#xff1a;SAX與DOM SAX方式&#xff1a;主要是事件驅動的解析方式&#xff0c;是逐行讀取XML數據&#xff0c;不斷回調代理&#xff0c;告訴代理當前解析的元素開始或者結束。 DOM解析方式&#xff1a;是講整個XML數據全部讀入內存&#xff0…