創新工場和BCG咨詢合作的「+AI改造者」系列:看看無人機技術起家的極飛,如何賦能農業生產全環節,提升全球農業生產效率。
改造者系列:農業「+AI」全環節守護新疆棉花
近期,創新工場聯合BCG波士頓咨詢旗下亨德森智庫,推出「AI融合產業:『改造者』如何促進AI普惠」系列研究。人工智能在中國大陸有著明確的落地應用場景,大量的AI企業活躍於這些垂直場景中,我們定義這些企業為「改造者」。「改造者」通過傳授其AI技術和垂直行業理解,極大地打破了傳統企業應用AI的瓶頸。
作為擅於趨勢前瞻的TechVC,創新工場長期看好AI領域,深入佈局,至今已經投出了7只AI獨角獸。在系列研究中,我們采訪了數家創新系AI企業,通過這些「改造者」的視角,探究傳統企業擁抱AI的範式與路徑。
創新工場投資的極飛科技是一家致力於未來農業的AI科技公司,極飛將無人機、機器人和傳感器部署在稻田、麥田和棉花田裏,用技術賦能農業中的播種、農藥噴灑、栽種管理、甚至天氣監測環節。用於作物噴灑的極飛科技R150農業無人車已經被推廣到了英國,應用在蘋果、草莓、黑莓等多種經濟作物的種植流程中。
在采訪中,極飛科技聯合創始人龔檟欽表示,AI在農業的應用才剛剛開始,未來極飛會探索更多AI和農業的融合,例如用AI來賦能優化作物模型(crop modelling),幫助識別作物生長過程中的不確定因素,從而實現提前預警和判斷。以下:
■系列導讀
本系列由BCG亨德森智庫與創新工場董事長兼首席執行官李開復博士帶領的創新工場團隊共同推出,圍繞「AI融合產業:『改造者』1如何促進AI普惠」的課題,我們致力於探究傳統企業在應用AI過程中的關鍵要素與合作夥伴,以及傳統企業擁抱AI的範式與路徑。
在農業領域,隨著機器自動化、機器視覺、物聯網等技術的發展,農業的提質增效和轉型升級也被不斷加速。以極飛科技為代表的一批農業科技企業,通過無人機、智慧農業系統等科技賦能,使得傳統的農業勞動更加高效、環保、節能。
1 「改造者」通過傳授其AI技術和垂直行業理解,極大地削弱了傳統企業應用AI的瓶頸,充當產業中傳統企業應用AI的橋樑。「改造者」包括AI企業與成功轉型AI的傳統企業。
■本期受訪嘉賓:龔檟欽
極飛科技將無人機、機器人、自動駕駛、人工智能、物聯網等技術帶進農業生產,通過構建無人化智慧農業生態,讓農業進入自動化、精准高效的 4.0時代。
龔檟欽是極飛科技聯合創始人,2018年福布斯中國「30 under 30」封面人物。龔檟欽曾任鳳凰衛視特約海外記者、國家地理製片人。龔檟欽先生擁有悉尼大學學士學位、巴黎九大與清華大學聯合博士學位在讀。
■對談實錄
Q1:極飛科技最早以無人機技術起家,後來為何選擇進入農業這一垂直領域?
龔檟欽:極飛科技以無人機航模控制器起家,最開始的時候我們曾嘗試過把無人機技術帶到電力巡線、安防、南極科考、物流等諸多領域,但很多領域的應用很難市場化,比如物流或電力巡線在當時都受到市場規模和法律法規的制約,難以發揮無人化技術的最大價值。
2013年9月,由於機緣巧合,極飛科技開始探索農業這一領域的無人機應用。我們發現,有客戶購買極飛的飛控之後進行改裝,拿到新疆去做航拍,還有許多人看到極飛之後在考慮用無人機做農藥噴灑。於是當月我們也一起走訪了新疆。9月正值棉田收穫期,我們卻看到大量農民背著藥箱,忍受著刺鼻的氣味在噴灑農藥,原因就在於新疆已經請不到采棉工了,需要農民噴灑脫葉劑來保證棉花同步成熟,再由大型采棉機統一采收。但是人工噴灑脫葉劑的效率非常低下,而用拖拉機噴灑又會軋壞棉花導致減產。
當時的新疆不僅缺乏采棉工,連噴灑脫葉劑的人工也請不到了。隨著城鎮化的發展,大量人口從農村流入城市,從前每年秋天新疆會有六七十萬人坐著綠皮火車從四川、河南、陝西來采棉花,如今這樣的畫面已難以再現。新疆出現了勞動力供給的缺口,而這也正是機器和技術能夠賦能的地方,就采棉催熟而言,要求脫葉劑的噴灑量不高,無人機這種空中飛行的機器有著天然的優勢——能夠在空中精准、均勻地噴灑,很大程度上減少人力並提高效率。不只是采摘,從播種到收穫的全流程中,機器人能高效地完成許多任務,包括播種、施肥、除草、除蟲等等,無人機能夠極大地提升農業生產效率,尤其在生產期較短的地域迅速提高單位時間的產量。由此,無人機能為農民釋放更多產能,一個人能管理的農田更大,即技術賦能土地規模化集中,而土地規模化之後農民對機器的需求也更大,從而進入「技術加速資源有效整合」的正向循環。
目前,極飛科技的無人機已經覆蓋了新疆機采棉面積的一半以上2,從棉花延伸到了水稻、小麥等需要大量人工的作物,從新疆延伸到了東北、雲南等全國大部分地域。
我們一直相信,當腦海裏有一項技術的時候,你要為技術選擇一個行業,選擇用技術來做什麼事。
2截至2020年10月,極飛科技農業無人機棉花脫葉劑作業面積占新疆機采棉面積的一半以上。
Q2:極飛在賦能農業的過程中是否遇到過什麼挑戰?極飛是如何應對的?
龔檟欽:在工業裏,規模化生產的工廠是工業自動化的天然載體,但在農業裏,農戶的規模差異很大,許多農戶的農田本身很小,對於機器應用能帶來的成本優化是無感的,這就涉及到「技術下鄉的微觀載體是誰」的問題。
極飛最早發現了這樣一群人,他們是縣城裏做婚慶攝影的攝影師,隨著航拍變得越來越容易,他們面臨著更加激烈的競爭。但是農民不會用無人機,極飛就請這些攝影師,或者說飛手,去幫農民打農藥。飛手發現農業用無人機的頻次高得多,市場又大,農民與他們之間也存在著比較大的技術差距,於是這些飛手們便成為了極飛下鄉的第一批「用戶」,架起農民和農業科技之間的橋樑。
過了一段時間後,這批飛手開始感到困惑,他們並不懂農業、不懂種植,也無法識別農藥的真假,於是另一批群體出現了——農資店。農資店主往往很懂農戶,很清楚周邊農戶種植的作物種類、規模,也有農戶的熟人網絡,由農資店來推銷無人機、提供打藥服務等,就會容易得多。農資店就這麼成為了極飛的「經銷商」。
兩三年後,隨著無人機、無人車等設備的滲透更高、覆蓋範圍更大,農戶開始出現對無人機維修的售後需求,農機商便成了我們的夥伴。農機商有更大的店面,有展廳、有維修車間,就像是汽車的4S店。他們也懂農業、有銷售團隊和培訓團隊,農機商就成了極飛「更大型的經銷商」。
到這裡,整個產業鏈已經連接上了,商業模式被驗證了——農機商可以幫我們推廣農機,農資店、無人機飛手可以幫助培訓。對極飛來說,分銷商就是農機商,經銷商就是農資商和飛手。
Q3:極飛自然衍生的渠道網絡非常有趣,從更大的農業產業鏈角度來看,極飛如何賦能農業產業鏈中的傳統企業?
龔檟欽:農業產業鏈中的企業可以簡化為三大類:作物科學公司、農業技術公司、食品與供應鏈公司。作物科學公司包括拜耳、中化等,研究農藥、化肥、種子,負責為農業提供生產資料。食品與供應鏈公司包括拼多多、百果園、盒馬等,把農產品變為商品,進行流通並銷售。農業技術公司負責農產品、農作物的生長管理,通過技術來幫助農業提升效率,極飛就屬於這一類。我們有一個說法是極飛幫助了農產品進行「光合作用」,通過抵抗農業生產過程中由於氣候、資本、勞動力等多方因素導致的不確定性。
農業技術公司位於另兩類公司中間,起到連接上下游的作用。比如作物科學公司想知道種子的生產效果、農藥的效果,可以通過極飛的種植管理記錄來做調研,從而優化下一代產品。比如農產品超市想采購無過量農藥的水果,可以調取極飛植保服務記錄來識別更高品質的水果供應商。可以看出,除了提升效率之外,極飛還提升了農業的透明度和可追溯性。相應地,在終端也會產生更高的價值回報,農民能獲得更多收入,消費者願意為此買單。
Q4:極飛對未來的發展規劃是什麼?會繼續深耕農業還是拓展更多行業應用?
龔檟欽:極飛選擇深耕農業,因為對於已經有七年技術和經驗積累的我們來說,再造更多其他類型的農業機器人、無人機,或者結合材料科學、結構設計優化農業機械,再或者把AI演算法嵌入農業機器,並不會太困難,但別的行業企業要進入農業是很難的,農業的行業壁壘還是很高的。
而且,在農業中AI的應用剛剛開始,未來我們可以探索更多AI和農業的融合,比如用AI來賦能優化作物模型(crop modelling),幫助識別作物生長過程中的不確定因素,從而實現提前預警和判斷;又比如探索作物科學,用深度學習來挖掘作物性狀,再通過優化生長管理極大地提升作物產量或品質,這些都是未來的方向。
■要點回顧
1、在垂直產業生態中,AI企業大可以自建網絡,根據協同性和互補性來決定網絡中的生態夥伴。隨著佈局下沉和戰線拉長,構建網絡並不會容易,AI企業需要從挑戰中找尋機遇,用更縱深的網絡推動AI與產業持續交織。
2、AI企業能幫助傳統行業「化不確定為確定」,極大地提升給定資源條件下的生產效率,加速「光合作用」。而傳統企業應當主動與AI企業共同暢想未來,重新想像AI將為行業帶來什麼價值和機遇。
3、AI企業可以在垂直領域中探索將業務與AI以及生物、材料等諸多技術進行融合,持續深耕垂直領域。
「最短路徑演算法比較」的推薦目錄:
- 關於最短路徑演算法比較 在 Facebook 的精選貼文
- 關於最短路徑演算法比較 在 李開復 Kai-Fu Lee Facebook 的最佳貼文
- 關於最短路徑演算法比較 在 李開復 Kai-Fu Lee Facebook 的最佳貼文
- 關於最短路徑演算法比較 在 最短路徑:BellmanFord 演算法 - YouTube 的評價
- 關於最短路徑演算法比較 在 Shortest Path:Intro(簡介) 的評價
- 關於最短路徑演算法比較 在 最短路徑演算法比較在PTT/mobile01評價與討論 - 投資資訊集合站 的評價
- 關於最短路徑演算法比較 在 最短路徑演算法比較在PTT/mobile01評價與討論 - 投資資訊集合站 的評價
- 關於最短路徑演算法比較 在 最短路徑演算法實例在PTT/Dcard完整相關資訊 的評價
- 關於最短路徑演算法比較 在 最短路徑演算法實例在PTT/Dcard完整相關資訊 的評價
最短路徑演算法比較 在 李開復 Kai-Fu Lee Facebook 的最佳貼文
來自創新工場大灣區人工智慧研究院的兩篇論文入選了自然語言處理領域(NLP)頂級學術會議 ACL 2020 。
這兩篇論文均聚焦中文分詞領域,是深度學習引入知識後的有益嘗試,將該領域近年來廣泛使用的各資料集上的分數全部刷至新高,在工業中也有著可觀的應用前景。
本文來自創新工場公眾號
……………………………………………………………………
創新工場兩篇論文入選ACL 2020,將中文分詞性能刷至新高
“土地,我的金箍棒在哪裡?”
“大聖,你的金箍,棒就棒在,特別配你的髮型。”
感謝神奇的中文分詞,給我們帶來了多少樂趣。豐富多變的中文行文,給人的理解造成歧義,也給AI分詞帶來挑戰。
近日,自然語言處理領域(NLP)頂級學術會議 ACL 2020 (https://acl2020.org/)正在火熱舉行。
令人振奮的是,來自創新工場大灣區人工智慧研究院的兩篇論文入選。這兩篇論文均聚焦中文分詞領域,是深度學習引入知識後的有益嘗試,將該領域近年來廣泛使用的各資料集上的分數全部刷至新高,在工業中也有著可觀的應用前景。
分詞及詞性標注是中文自然語言處理的基本任務,尤其在工業場景對分詞有非常直接的訴求,但當前沒有比較好的一體化解決方案,而且中文分詞普遍存在歧義和未登錄詞的難題。
基於此,兩篇論文各自提出了“鍵-值記憶神經網路的中文分詞模型”和“基於雙通道注意力機制的分詞及詞性標注模型”,將外部知識(資訊)創造性融入分詞及詞性標注模型,有效剔除了分詞“噪音”誤導,大幅度提升了分詞及詞性標注效果。
兩篇文章的作者有:華盛頓大學博士研究生、創新工場實習生田元賀,創新工場大灣區人工智慧研究院執行院長宋彥,創新工場科研合夥人張潼,創新工場CTO兼人工智慧工程院執行院長王詠剛等人。
ACL(The Association for ComputationalLinguistics)國際計算語言學協會是自然語言處理領域影響力最大、最具活力的國際學術組織之一,自1962年創立以來已有58年歷史,其每年夏天舉辦的年會是該領域學術頂會。
與往年不同的是,受新冠疫情影響,ACL2020全部轉為線上進行,不過這絲毫沒有減弱熱度。根據之前公佈的資料,今年大會投稿數量超過3000篇,共接收 779 篇論文,包括 571 篇長論文和 208 篇短論文,接收率為 25.2%,在全球疫情衝擊下反而是有史以來最盛大的一屆ACL會議,創新工場的技術大牛們也頂著時差連續數晚熬夜參會。
▌利用記憶神經網路,將中文分詞性能刷到歷史新高
中文分詞目的是在中文的字序列中插入分隔符號,將其切分為詞。例如,“我喜歡音樂”將被切分為“我/喜歡/音樂”(“/”表示分隔符號)。
中文語言因其特殊性,在分詞時面臨著兩個主要難點。一是歧義問題,由於中文存在大量歧義,一般的分詞工具在切分句子時可能會出錯。例如,“部分居民生活水準”,其正確的切分應為“部分/居民/生活/水準”,但存在“分居”、“民生”等歧義詞。“他從小學電腦技術”,正確的分詞是:他/從小/學/電腦技術,但也存在“小學”這種歧義詞。
二是未登錄詞問題。未登錄詞指的是不在詞表,或者是模型在訓練的過程中沒有遇見過的詞。例如經濟、醫療、科技等科學領域的專業術語或者社交媒體上的新詞,或者是人名。這類問題在跨領域分詞任務中尤其明顯。
對此,《ImprovingChinese Word Segmentation with Wordhood Memory Networks》這篇論文提出了基於鍵-值記憶神經網路的中文分詞模型。
該模型利用n元組(即一個由連續n個字組成的序列,比如“居民”是一個2元組,“生活水準”是一個4元組)提供的每個字的構詞能力,通過加(降)權重實現特定語境下的歧義消解。並通過非監督方法構建詞表,實現對特定領域的未標注文本的利用,進而提升對未登錄詞的識別。
例如,在“部分居民生活水準”這句話中,到底有多少可能成為詞的組塊?單字可成詞,如“民”;每兩個字的組合可能成詞,如“居民”;甚至四個字的組合也可能成詞,例如“居民生活”。
把這些可能成詞的組合全部找到以後,加入到該分詞模型中。通過神經網路,學習哪些詞對於最後完整表達句意的幫助更大,進而分配不同的權重。像“部分”、“居民”、“生活”、“水準”這些詞都會被突出出來,但“分居”、“民生”這些詞就會被降權處理,從而預測出正確的結果。
在“他從小學電腦技術” 這句話中,對於有歧義的部分“從小學”(有“從/小學”和“從小/學”兩種分法),該模型能夠對“從小”和“學”分配更高的權重,而對錯誤的n元組——“小學”分配較低的權重。
為了檢驗該模型的分詞效果,論文進行了嚴格的標準實驗和跨領域實驗。
實驗結果顯示,該模型在5個資料集(MSR、PKU、AS、CityU、CTB6)上的表現,均達了最好的成績(F值越高,性能越好)。(注:所選擇的五個資料集是中文分詞領域目前全世界唯一通用的標準資料集)
創新工場大灣區人工智慧研究院執行院長宋彥表示,與前人的模型進行比較發現,該模型在所有資料集上的表現均超過了之前的工作,“把中文分詞領域廣泛使用的標準資料集上的性能全部刷到了新高。”
在跨領域實驗中,論文使用網路博客資料集(CTB7)測試。實驗結果顯示,在整體F值以及未登陸詞的召回率上都有比較大提升。
▌“雙通道注意力機制”,有效剔除“噪音”誤導
第二篇論文《Joint ChineseWord Segmentation and Part-of-speech Tagging via Two-way Attentions ofAuto-analyzed Knowledge》提供了一種基於雙通道注意力機制的分詞及詞性標注模型。
中文分詞和詞性標注是兩個不同的任務。詞性標注是在已經切分好的文本中,給每一個詞標注其所屬的詞類,例如動詞、名詞、代詞、形容詞。詞性標注對後續的句子理解有重要的作用。
在詞性標注中,歧義仍然是個老大難的問題。例如,對於“他要向全班同學報告書上的內容”中,“報告書”的正確的切分和標注應為“報告_VV/書_N”。但由於“報告書”本身也是一個常見詞,一般的工具可能會將其標注為“報告書_NN”。
句法標注本身需要大量的時間和人力成本。在以往的標注工作中,使用外部自動工具獲取句法知識是主流方法。在這種情況下,如果模型不能識別並正確處理帶有雜音的句法知識,很可能會被不準確的句法知識誤導,做出錯誤的預測。
例如,在句子“他馬上功夫很好”中,“馬”和“上”應該分開(正確的標注應為“馬_NN/上_NN”)。但按照一般的句法知識,卻可能得到不準確的切分及句法關係,如“馬上”。
針對這一問題,該論文提出了一個基於雙通道注意力機制的分詞及詞性標注模型。該模型將中文分詞和詞性標注視作聯合任務,可一體化完成。模型分別對自動獲取的上下文特徵和句法知識加權,預測每個字的分詞和詞性標籤,不同的上下文特徵和句法知識在各自所屬的注意力通道內進行比較、加權,從而識別特定語境下不同上下文特徵和句法知識的貢獻。
這樣一來,那些不準確的,對模型預測貢獻小的上下文特徵和句法知識就能被識別出來,並被分配小的權重,從而避免模型被這些有噪音的資訊誤導。
即便在自動獲取的句法知識不準確的時候,該模型仍能有效識別並利用這種知識。例如,將前文有歧義、句法知識不準確的句子(“他馬上功夫很好”),輸入該雙通道注意力模型後,便得到了正確的分詞和詞性標注結果。
為了測試該模型的性能,論文在一般領域和跨領域分別進行了實驗。
一般領域實驗結果顯示,該模型在5個資料集(CTB5,CTB6,CTB7,CTB9,Universal Dependencies)的表現(F值)均超過前人的工作,也大幅度超過了斯坦福大學的 CoreNLP 工具,和伯克利大學的句法分析器。
即使是在與CTB詞性標注規範不同的UD資料集中,該模型依然能吸收不同標注帶來的知識,並使用這種知識,得到更好的效果。
而在跨領域的實驗中,和斯坦福大學的CoreNLP 工具相比,該模型也有近10個百分點的提升。
▌主動引入和分辨知識,實現中文分詞技術突破
中文分詞在中國科研領域已經有幾十年的歷史。最初的中文分詞是基於詞典構建,詞典的好壞會直接影響到最後分析的效果。如果某個新詞在詞典裡沒有,那麼模型是死活都分不出來的。
這種方式的局限性還在於,詞典和分詞兩件事情中間始終有一條鴻溝,儘管詞典可以編撰得非常全面,但在處理分詞的時候,因為每一句話都有上下文語境,往往會產生多種不同的切分方法,從而無法有效地在當前語境下對分詞結構進行恰當的指導。
從2003年開始,分詞方法出現了新的突破。研究人員提出了打標籤的方式,通過給每一個字打詞首、詞尾、詞中的標籤,不再需要構建詞典,大幅度提升了未登錄詞的召回效果。
到了2014年左右,深度學習和神經網路開始被廣泛應用到中文分詞中,打標籤的模型從之前的淺層學習變成了深度學習,但演算法本質沒有發生變化,所以提升作用並不太大。
近兩年,學界開始研究怎麼在打標籤的過程中加入外部知識和資訊。創新工場的這兩篇文章就是沿著這個路徑,用記憶神經網路的方式記錄對分詞結果有影響的 n元組,並引入對詞性標注有影響的句法知識,將分詞結果和自動獲得的知識銜接起來,既發揮了神經網路的優勢,也把知識的優勢用上,實現了分詞技術上小而有效的改進和突破。
宋彥表示,“從技術創新的角度,我們的貢獻主要有兩點。一是在現有技術的基礎上,建立了一個一體化的模型框架,使用非監督方法構建詞表,並把知識(資訊)融入進來,使用更高層次的句法知識,來幫助詞性標注,起到'他山之石,可以攻玉’的效果。”
“二是主動吸收和分辨不同的外部知識(資訊)。通過鍵-值記憶神經網路和雙通道注意力機制,進行動態權重的分配,能夠有效分辨知識,區分哪些是有效的,哪些是無效的。雖然這些知識是自動獲取的、不準確的,但‘三個臭皮匠,頂個諸葛亮’,經過有效利用,總能湊出一些有用的資訊。如何實現模型的主動吸收和分辨,就變得更加重要。”
據瞭解,今年的ACL大會,在分詞領域一共收錄了18篇論文,創新工場人工智慧工程院同時有2篇入選,也表現出ACL官方對這一貢獻的認可。
▌具備跨領域分詞能力,提升工業應用效率
中文分詞和詞性標注是最底層的應用,對於接下來的應用和任務處理非常重要。例如對於文本分類、情感分析,文本摘要、機器翻譯等,分詞都是不可或缺的基本“元件”。
宋彥表示,做此項研究的目的是主要為了拓展其工業場景的應用,正確的分詞能夠平衡公司應用開發的效率和性能,同時方便人工干預及(預)後處理。
這也是創新工場人工智慧工程院的努力方向之一。工程院成立於2016年9月,宗旨是銜接科技創新和行業賦能,做嫁接科研和產業應用的橋樑,為行業改造業務流程、提升業務效率。
工程院下設北京總部、南京研究院和大灣區研究院。大灣區研究院再下設資訊感知和理解實驗室,專注于對自然語言處理(NLP)領域的研究。執行院長宋彥本人也有超過15年的NLP領域的科研經驗。
“在工業場景使用的時候,跨領域的模型能力是一個非常直接的訴求。”宋彥表示,在某個領域的訓練模型,大概率也需要應用到其他領域。
“如何在新領域缺少資料,或者新領域只有少量未標注資料的情況下,實現模型的冷開機,依然是項巨大的挑戰。如果能利用外部知識,提高模型性能,就能有效地召回很多在訓練集中沒有出現過的新詞。”
例如搜尋引擎的廣告系統,最初也是通過組詞匹配的方式,在某個特定領域訓練其分詞模型,但在進入一個新的領域時,例如從新聞領域進入醫療領域或體育領域,效果往往會大打折扣,甚至頻頻出錯。
而使用跨領域特性後,廣告系統在進入新領域時,便無需額外的資料,就可以對它進行比較準確的分詞和標注,從而有效匹配廣告和客戶,大大提升系統運行的效率和穩定性。
目前,這兩篇論文的工具都已經開源,在下面兩個連結中,可以找到對應的所有代碼和模型,各位朋友可按需自取:
分詞工具:https://github.com/SVAIGBA/WMSeg
分詞及詞性標注工具:https://github.com/SVAIGBA/TwASP
最短路徑演算法比較 在 李開復 Kai-Fu Lee Facebook 的最佳貼文
分享好文,中學生要學電腦嗎?
作者:創新工場CTO、人工智慧工程院執行院長 王詠剛
文章来自半轻人微信公众号(ban-qing-ren)
………………………………
朋友的孩子高中剛畢業,已拿到美國頂尖大學(非電腦專業)的錄取通知。疫情影響,不知何時才能去學校報到。孩子想抓緊學習一下程式設計,為大學打好基礎。這孩子找我聊了一個多小時,從如何學程式設計,聊到非電腦專業和電腦專業的路徑差異,又聊到如何從不同角度認識電腦與程式設計。聊得比較寬泛,不知是否對這孩子有用。
回想我自己的高中時代:那時雖迷戀程式設計,卻完全沒有懂行的人指導。在我們那個四線城市的廠礦中學裡,開設電腦興趣課的老師知道的資訊還沒我多。我高一時跑到北京中關村逛街,卻完全沒意識到中國第一代頂尖程式師當時就在我身邊的低矮辦公樓裡寫代碼(這話說得並不準確,比如求伯君那年就主要是在珠海做開發),鼎鼎大名的UCDOS、WPS、CCED就出自他們之手……我在當時街邊的一家書店(位置似乎就在今天的鼎好大廈對面)買到了許多種印刷品質極低劣的電腦圖書。用今天的標準看,那就是一批盜版影印或未授權翻譯的國外圖書。可那批書竟成了我高中時代最寶貴的程式設計知識來源。
顯然,我在高中時根本就是野路子學電腦。現在後悔也沒用,當時我的眼界或能觸及的資源就那麼多。如果能穿越回30年前,我該對喜歡程式設計的自己說些什麼呢?這些年,我與世界上最好的一批程式師合作過,也參與過世界上最有價值的軟體系統研發——我所積累的一些粗淺經驗裡,有哪些可以分享給一個愛程式設計的中學生?
【問題1】中學生要不要學電腦?
當然要!
每個中學生都要學。只不過——建議大部分中學生使用“休閒模式”,小部分(不超過10%)中學生使用“探險模式”。
啊?兩個模式?那我該進入哪個模式?⟹請跳轉至【問題2】
【問題2】選哪個模式?
你癡迷電腦嗎?比如,你玩遊戲時會特別想知道這遊戲背後的代碼是如何編寫的嗎?再比如,就算老師家長不同意你學電腦,甚至當著你的面把電腦砸了,你也要堅持學電腦嗎?如果是,恭喜你進入“探險模式”⟹請跳轉至【問題200】
你對數學有興趣嗎?比如,你看到街邊建築的曲線,就會在腦子裡琢磨曲線對應的函數或方程嗎?每當手裡攥著幾粒骰子,你就會不由自主地計算概率嗎?如果是,歡迎進入“探險模式”⟹請跳轉至【問題200】;當然,如果有些猶豫,也可以先進入“休閒模式”⟹請跳轉至【問題100】
即便你對電腦和數學興趣不大,家長、老師還是強烈建議你學電腦嗎?就算你一百個沒時間一千個不願意,家長、老師還是會逼著你學電腦嗎?如果是,建議你主動進入“休閒模式”並向家長、老師彙報說“我已經按照前谷歌資深軟體工程師的專業建議在認真學程式設計了”⟹請跳轉至【問題100】
其他情況,一律進入“休閒模式”。⟹請跳轉至【問題100】
【問題100】休閒模式 | 主要學什麼?
“休閒模式”將電腦視為我們生活、工作中的必備工具,主要學習如何聰明、高效、優雅地使用計算設備。這裡說的計算設備,包括所有形式的電腦、手機、遊戲機、智慧家電以及未來一定會進入生活的自動駕駛汽車。
什麼什麼?你已經會用電腦、會玩手機、會打遊戲了?別著急,慢慢往下看。
【問題101】休閒模式 | 我會用搜尋引擎嗎?
我知道你會用百度搜習題答案。但,習題答案不是知識。你會用搜尋引擎來搜索和梳理知識嗎?請試著用電腦和你喜歡的搜尋引擎來解決如下兩個問題:
(1)圓周率𝜋的計算方法有多少種?每種不同的計算方法分別是由什麼人在什麼時代提出的?借助電腦,今天人們可以將圓周率𝜋計算到小數點後多少位?將圓周率𝜋計算到小數點這麼多位元,一次大概需要花掉多少度電?
(2)全球大約有多少個廁所?在發展程度不同的國家,分別有多少比例的人可以享用安裝了抽水馬桶的衛生廁所?為什麼比爾·蓋茨曾大力推動一個設計新型馬桶的研發專案?比爾·蓋茨的公益組織在這個專案上大約花費了多少資金,最終收到了多大的效果?
如果你沒法快速得到上述問題的全部答案,那就給自己設一個小目標:一個月內,學會用搜尋引擎系統地獲取、梳理一組知識點的全部技巧。
【問題102】休閒模式 | 接下來學什麼?
建議學好典型的工具軟體。比如,我知道你會用Office了,但用Office和用Office是很不一樣的。對生活、學習、工作來說,學好、學透一個工具軟體比鑽研程式設計技巧更實用。
你會用Excel來管理班級公益基金的預算和實際收支情況嗎?
你會用Excel做出過去20年裡全球大學排名的演變趨勢圖嗎?
你會用Word排版一篇中學生論文嗎?論文中的圖表和最後的參考文獻部分該如何排版?
你會用Word編排一份班級刊物,包含封面、扉頁、目錄、插圖頁、附錄、封底等部分,可以在列印後直接裝訂成冊嗎?
PowerPoint呢?你有沒有研究過蘋果公司發佈會上那些幻燈片的設計?當約伯斯(多年以前)或蒂姆·庫克站在幻燈片前的時候,他們的演講思路是如何與幻燈片完美結合的?
還有哦,別忘了學學如何為數碼照片做後期,如何用電腦或手機剪視頻,如何為剪輯好的視頻配字幕,如何將照片、音樂、視頻等素材結合起來,做出一段吸引人的快手/抖音短視頻。
最後,抽空玩玩那些設計精妙的遊戲吧,比如《紀念碑穀》、《塞爾達傳說:曠野之息》之類;同時,遠離那些滿屏廣告,或者一心騙你在遊戲裡充值花錢的垃圾。
【問題103】休閒模式 | 不學學知識嗎?
當然要學知識。下面每種實用的電腦知識都夠大家學一陣子了。
(1)色彩知識:你知道同一張數碼照片在不同品牌的手機螢幕上、不同的電腦螢幕上、不同的智慧電視上顯示時,為什麼經常有較大色差嗎?你知道有一些色彩只適合螢幕顯示,不適合列印輸出嗎?你知道軟體工具裡常用的RGB、HSL之類的色彩空間都是什麼意思嗎?如何在設計PowerPoint幻燈片時選擇一組和諧美觀的色彩?
(2)字體知識:你知道什麼是襯線字體,什麼是無襯線字體嗎?你知道網頁中常用的英文字體都有哪些嗎?你知道商務演講時最適用于幻燈片的英文字體有哪些嗎?你知道電腦和手機常用的黑體、宋體、仿宋體、楷體等中文字體分別適合哪些實際應用場合嗎?你會將不同字體混排成一個美觀的頁面嗎?
(3)網路知識:你知道5G是什麼嗎?你知道5G和4G在通信頻寬、通信距離上的具體區別嗎?你知道什麼是路由器,什麼是防火牆嗎?你知道如何配置路由器,如何配置防火牆嗎?微信或QQ聊天時,對方發的文字、語音或視頻是如何傳送到你的手機上的?
(4)應用知識:淘寶中搜索得到的商品資訊是從哪裡來的?商品是按什麼方式排序的?為什麼購物APP經常會推薦給你一些曾經買過、看過的商品?你知道如何為自己建立個人網站嗎?你知道如何管理微信公眾號嗎?
(5)安全知識:你知道網路上的釣魚攻擊是怎麼回事兒嗎?你知道什麼是電腦漏洞嗎?你知道駭客為什麼想把一大批受攻擊的電腦變成可以遠端操控的傀儡機嗎?你知道為什麼現在很多手機APP都要通過短信發送驗證碼嗎?如果驗證碼被壞人截獲,你會面臨哪些風險?
這裡只是舉例。實用的電腦知識還有很多。大家可以自己發掘。
【問題104】休閒模式 | 我需要學程式設計嗎?
可以學,但不是必須。即便學,也只需要根據自己的需要,學那些最能幫你解決現實問題的部分。
【問題105】休閒模式 | 我該學什麼程式設計語言?
在“休閒模式”裡,電腦就是工具,程式設計也是工具,夠用就好。學什麼程式設計語言,完全看你想要電腦幫你做什麼。
• 如果你想對資料處理有更多自主權,那不妨學學Python;
• 如果你想做簡單的交互演示程式,那就先把JavaScript學起來;
• 如果你想更好、更快地寫論文,那不妨學學LaTeX(什麼什麼,LaTeX不是程式設計語言?你太小看LaTeX了);
• 如果你想學做簡單的手機APP,那麼,Android手機就學Java,蘋果手機就學Swift好了;
• 如果你只想知道程式設計是怎麼回事,那……從Python或JavaScript開始就行。其實,跟五六歲的小朋友一起學學Scratch圖形程式設計也不錯。
【問題106】休閒模式 | 我需要學人工智慧嗎?
在“休閒模式”裡,最需要學的不是“人工智慧的實現原理”,而是“什麼是人工智慧”,以及“人工智慧能做什麼,不能做什麼”。
• 在手機上試一試,人工智慧做語音辨識時能做到什麼水準?哪些話容易識別,哪些話不容易識別?
• 打開機器翻譯軟體,試一試哪些資訊翻譯得好,哪些資訊翻譯得不好?
• 手機上的拍照軟體一般都有人臉識別功能。試一試人臉識別在什麼場景下做得好,什麼場景下做得不好?
• 找一部講人工智慧的科幻電影,用自己的判斷解讀一下,電影裡哪些技術有可能成為現實,哪些技術存在邏輯矛盾。
【問題107】休閒模式 | 推薦什麼參考書、參考文獻?
書不重要,豆瓣評分7分以上的電腦應用、程式設計甚至科普類圖書都可以拿來翻翻。
直接在知乎裡搜索你想瞭解或學習的知識點可能更有效率。
如果你意猶未盡,覺得自己剛活動開筋骨,還想挑戰更高層次,歡迎進入“探險模式”。⟹請跳轉至【問題200】
否則,“休閒模式”到此結束。⟹請離開此問答
【問題200】探險模式 | 主要學什麼?
“探險模式”需要有挑戰精神。電腦科學的世界技術演進快,脈絡複雜,要想在探索時不迷路,你得通過有順序、有系統地學習電腦知識,慢慢構建出一張可以在未來幫你走得更遠的思維地圖來。
在“探險模式”裡,電腦就不止是一件能快速計算的工具了。電腦更像是我們大腦的一種延伸。這既包括認知能力的延伸,也包括認知邏輯的延伸。隨著學習深入,大家會逐漸體會到電腦所具有的多維度能力:
電腦是一種可以表示不同類型資訊(數、符號、文字、語音、圖像、視頻、虛擬空間、抽象邏輯)的“資訊管理機”;
同時,電腦也是一種可以連續執行指令以完成特定的資訊處理任務的“指令處理機”;
同時,電腦還是一種可以在知識與邏輯層面完成特定推理任務的“知識推理機”;
同時,電腦也是一種可以從人類給定的資料或自我生成的資料中總結規律,建立模型,自主完成某些決策的“智慧學習機”。
“探險模式”的目標就是盡可能準確地認識電腦,掌握有關電腦運行的最基本規律。有了這些基礎。未來在大學期間或工作中,你就能更容易地設計電腦軟硬體系統,或是設計出碳基大腦(人類)與矽基大腦(機器智慧)之間的最佳協作方案。
【問題201】探險模式 | 我的英語水準足夠嗎?
蘋果每年秋季的新品發佈會,不加字幕的話,你能聽懂多少?
能聽懂大部分:建議在學習電腦的過程中,盡可能使用英文教材、英文文檔。
能聽懂小部分:建議將原來準備學電腦的時間,分出一部分來學英語。
只能聽懂“你好”“再見”之類:⟹請離開此問答。然後,把原來準備學電腦的時間用於學英語,六個月後再回來。
【問題202】探險模式 | 我的數學水準足夠嗎?
如果你是數學和數學應用小能手——較複雜的數學問題總能快速找到核心思路,或快速簡化為簡單問題;很容易就能將抽象概念映射到具體的數學圖形,或將數學問題與相應的現實問題關聯在一起:請繼續探險之旅。
如果你應付正常數學課程感到吃力:建議將原來準備學電腦的時間,分出一部分來學數學。
如果你還搞不清楚什麼是方程、函數、集合、概率……:⟹請離開此問答。然後,把原來準備學電腦的時間用於學數學,六個月後再回來。
【問題203】探險模式 | 為什麼強調英語和數學?
(1)統計上說,最好的電腦參考資料大都是英文寫的,最好的電腦課程大都是用英文講的,最新的電腦論文大都是用英文發表的。
(2)函數、方程、坐標系、標量、向量、排列組合、概率這些中學數學裡會初步學習到的數學知識,是電腦科學的基礎。
【問題204】探險模式 | 電腦知識那麼多,正確的學習順序是什麼?
最重要的順序有兩個。建議先從順序一開始,學有餘力時兼顧兩個順序。
順序一:自底向上,即,自底層原理向上層應用拓展的順序。
電腦原理的基礎知識:
為什麼每台電腦(包括手機)都有CPU、記憶體和外部設備?
(馮·諾依曼體系結構的)記憶體中為什麼既可以存儲資料,也可以存儲指令?
CPU是如何完成一次加法運算的?
程式設計語言的基礎知識:
資料類型,值,變數,作用域……
語句,流程控制語句……
過程、方法或函數,類,模組,程式,服務……
編譯系統的基本概念:
電腦程式是如何被解釋或編譯成目標代碼的?
演算法和資料結構的基礎知識:
陣列,向量,鏈表,堆,棧,二叉樹,樹和圖……
遞迴演算法,排序演算法,二叉樹搜索演算法,圖搜索演算法……
應用層的基礎知識:
為什麼電腦需要作業系統?設備驅動程式是做什麼的?
網路通信的基本原理是什麼?流覽器是怎麼找到並顯示一個網頁的?
資料庫是做什麼用的?
虛擬機器是怎麼回事?
人工智慧系統的基礎知識:
先熟悉些線性代數、概率和數學優化的基礎知識。
什麼是機器學習?從簡單的線性回歸中體會機器學習的基本概念、基本思路。
什麼是神經網路?什麼是深度神經網路?為什麼神經網路可以完成機器學習任務?
如何使用PyTorch或TensorFlow實現簡單的深度學習功能?
順序二:自頂向下,即,自頂層抽象邏輯向下層具體邏輯拓展的順序。
• 電腦的本質是什麼?
• 什麼是圖靈機?什麼是通用圖靈機?
• 什麼是讀取﹣求值﹣輸出迴圈(Read–eval–print Loop,REPL)?
如何用自頂向下的方式理解(解析、解釋、編譯)一段程式碼?
• 靜態語言和動態語言的區別?
如何理解變數與資料類型之間的綁定關係?
• 什麼是函數式程式設計?
程式設計語言中,函數的本質是什麼?
函數為什麼可以像一個值一樣被表示、存儲、傳遞和處理?
• 什麼是物件導向?
類的本質是什麼?
如何用物件導向的方式定義個功能介面?
如何依據介面實現具體功能?
• 什麼是事件驅動?
什麼是事件?事件如何分發到接收者?
如何在事件驅動的環境中理解代碼的狀態和執行順序?
【問題205】探險模式 | 如何提高程式設計水準?
在掌握基本知識體系的基礎上,學好程式設計只有一條路:多程式設計,多參加程式設計比賽,多做程式設計題,多做實驗項目,多找實習機會——其中,能參與真實專案是最有價值的。
【問題206】探險模式 | 該從哪一門程式設計語言學起?
我個人推薦的程式設計入門語言(可根據情況任選):
Python
Java
Swift
C#
JavaScript / TypeScript
Ruby
……
可能不適合入門,但適合後續深入學習的語言:
C
C++
Go
Objective-C
組合語言
機器語言(CPU指令集)
Shell Script
Lua
Haskell
OCaml
R
Julia
Erlang
MATLAB
……
【問題207】探險模式 | 如何選參考書和參考資料?
(1)強烈推薦的參考書和參考資料:
• MIT、Stanford、CMU、UC Berkeley這四所大學中任何一個電腦專業方向使用的教學參考書或參考資料。網上可以查到這些學校電腦專業方向的課程體系,有的學校甚至公開了課程視頻。其中往往會列舉參考書和參考資料連結。
• 維琪百科(英文)上的數學、電腦科學相關條目。
• Github上star數在1000以上的開原始程式碼和開來源文件。
(2)強烈推薦但須小心辨別的參考資料:
知乎上的數學、電腦科學相關條目。使用時需要格外注意三件事:
儘量只看高贊答案或高贊文章;
辨別並避開廣告軟文;
辨別並避開純抖機靈的故事或段子。
Stack Overflow上的程式設計問題解答:
自己動手實驗,辨別解答是否有效。
CSDN上的程式設計問題解答:
自己動手實驗,辨別解答是否有效。
(3)其他推薦的參考書和參考資料:
國內專業作者寫作的專業技術書籍(豆瓣評分7分以上的)。
大廠(Google、Facebook、Microsoft、Amazon、阿裡、騰訊、百度、頭條等)資深工程師的技術公號、專欄、博客等。
著名圖書系列:如O’Reilly的動物封面的系列圖書(請注意最新版本和時效性)。
國內翻譯的著名技術圖書(譯本在豆瓣評分7分以上的)。
(4)儘量避免的參考書和參考資料:
• 已經過時的圖書或參考資料。
• 作者或譯者人數比章節數還多的專業圖書。
• 百度百科上的數學或電腦科學相關資料。
什麼什麼?你這篇問答居然沒有推薦一本具體的圖書?是,沒錯。如果你覺得即便有了上面的線索,自己還是找不到好書好資料,那也許你還是適合“休閒模式”⟹請跳轉至【問題100】
最短路徑演算法比較 在 Shortest Path:Intro(簡介) 的推薦與評價
綜合以上,先學第二種問題的演算法:以單一vertex為起點,抵達Graph中的其餘所有vertex之最短路徑,再學第四種問題的Floyd-Warshall Algorithm(以及其他高效率的演算 ... ... <看更多>
最短路徑演算法比較 在 最短路徑演算法比較在PTT/mobile01評價與討論 - 投資資訊集合站 的推薦與評價
在最短路徑演算法比較這個討論中,有超過5篇Ptt貼文,作者Gazella也提到(代po 轉自dcard討論) 大家好小弟曾在IOT美商實習過目前在IC廠做手機driver 系統軟體相關工作 ... ... <看更多>
最短路徑演算法比較 在 最短路徑:BellmanFord 演算法 - YouTube 的推薦與評價
這個 演算法 可以針對有長度為負數的邊的圖形找出 最短路徑 ,一個起點到所有終點的 最短路徑 。 ... <看更多>