AI落地工業環境挑戰多,中鋼歸納3大AI導入經驗:足量訓練資料、選對技術、循序漸進為成功關鍵
中鋼採取由現場出題、專家解題的方法,從2017年開始較具規模的導入AI,今年在臺灣AI年會上,更分享了實作AI過程中遇到的挑戰,更以自家代表性的AI專案,歸納出3大實戰經驗來提供他者參考
文/翁芊儒 | 2020-11-19發表
中鋼綠能與系統整合研究發展處研究員許朝詠,以自己實作過的多個AI專案,來分享從選題、執行到落地的3大AI實戰經驗。
中鋼從2014年開始擁抱智慧製造,經歷了許多試驗後,才在2017年更有規模的落地AI應用,採取由現場出題、專家解題的方法,每年從上百個提案中篩選約20個可行性較高的方案,來導入應用場景。中鋼綠能與系統整合研究發展處研究員許朝詠,也在今年的臺灣AI年會上,以自己實作過的多個AI專案,從選題、執行到落地,歸納出3大AI實戰經驗,來提供其他企業借鏡參考。
許朝詠首先引述麥肯錫2019年發布的一份報吿指出,企業要在工業場景落地AI並不容易,超過7成的企業正在進行局部試點,其中29%企業已經試點超過2年,56%進行了1~2年,更有15%才剛起步。對中鋼來說,在導入AI過程中,也同樣面臨了「試點困境」,尤其在電腦視覺要落地煉鋼場域時,中鋼也面臨了4個AI應用挑戰。
其一,是工業環境不易控制,會造成取得影像的品質差異大,比如鋼鐵製造環境動輒在900度以上的高溫中,處理過程也可能噴水冷卻,導致難以取得清楚的影像;又或是在同樣位置拍攝的影像,也可能因光源不同,導致影像呈現不同的效果。
其二,現場實際環境會限制AI應用的計算能力,比如部分場所的空間有限,無法擺下GPU伺服器、或高計算能力的設備,甚至連網路線都無法部建,「在這樣的環境下,我們的模型就必須要能兼容邊緣運算,才能實際應用。」許朝詠說。
其三,被偵測物體的尺寸不一,也會影響深度學習的模型訓練成果。許朝詠以識別鋼品身分的AI序號辨識為例,就算是相同的鋼品,影像拍攝的尺寸不同,會造成鋼品上印製序號大小的差異,進而影響序號辨識模型的表現。
最後,則是深度學習模型的調整彈性差。同樣以序號辨識模型為例,許朝詠表示,有時會遇到視覺效果相同的數字(比如像是同一個數字1),在不同序列中卻無法辨識,「為什麼有時候,1可以辨識出來,有時候卻不行?」許朝詠表示,要解決這個問題,通常需要重新訓練模型,但會消耗許多時間。因此,中鋼目標要提出適合工業應用的物件偵測技術,來更輕易且廣泛的應用到各個製程。
3大AI導入經驗之一:充足訓練資料是AI成功落地的一大關鍵
許朝詠也透過多個中鋼導入AI的案例,來分享導入經驗。比如說,前述提到的AI序號辨識應用,是指在將鋼片卷曲製作成一卷卷的鋼卷後,會在鋼卷的金屬表面或是側面,噴印上鋼鐵的生產序號,藉此來辨識每一卷鋼鐵的身份。但是,這些序號的噴印位置,可能帶來不同的辨識挑戰,比如噴印在鋼卷表面,就可能因金屬反光影響序號辨識的精準度,若是噴印在鋼卷側面,層層堆疊的鋼片又可能導致字體變形,均會影響AI判讀。
「我們提供技術,但有些問題不是技術能解決的,就要跟現場人員溝通,請他們協助解決問題。」許朝詠指出,AI落地需要與第一線人員溝通協作。
不過,就算與現場人員合作,序號的辨識率仍無法達到100%,尤其是鋼卷側面序號的辨識率,僅達到9成5,「序號要完全正確才能用,9成5其實很低。」許朝詠表示,為了克服這項挑戰,中鋼在產線上的多個位置都設有攝影機,同時將這些攝影機判讀的資訊互通,透過多點的資訊對接,來判斷出鋼卷序號。
「不要把問題放在同一個地方,比如利用多點攝影機、多資訊的串流,去補足AI模型上的不足,就能讓整個系統的準確率達到100%。」他說。
另一個例子,則是高爐原料粒徑分析的AI應用。一般來說,高爐是用來將原料溶解為鐵水,而原料在送入高爐時,若粒徑大小分佈較平均,就能提升高爐的燃燒效率,中鋼甚至推算,高爐燃燒效率每提高1%,每年可以減少上億的燃料經費,因此,中鋼用AI來辨識每顆原料的粒徑大小,即時計算出進到高爐的物料大小與分佈狀況,再根據計算結果來調整物料分佈,進而提升燃燒效率。
許朝詠表示,上述兩個案例的共通點,在於資料的取得非常容易,不管是序號或是原料的影像資料,都在產線上不斷產生,「影像取得沒問題,資料也乾淨,較有機會訓練出良好的深度學習模型,也有機會快速達到成效。」相對來說,瑕疵辨識這類AI應用的影像資料搜集,就比較困難。
「要判斷一個案子能不能做,可以先看能不能蒐集到足量的資料。」這就是許朝詠歸納的第一大AI導入經驗。
3大AI導入經驗之二:不是最新技術也能打造最切合場景需求的應用
許朝詠也接續說明了無人天車的AI應用。天車是一種重型的起重裝置,用來吊送貨品、放置到指定位置,而中鋼就是將原先需要人為操控的天車,透過AI達到無人化,「這也是我認為中鋼應用AI最成功的案例。」
要達成無人天車,主要是把人眼看到的操作資訊,透過電腦視覺轉換為控制的指令,再交由天車自動執行,也就是將操作人員看見的鋼卷位置、放置位置及操作方法,都轉換為天車指揮系統可以判讀的資訊,再透過運動控制達到自動化。
無人天車使用的技術,包括能透過座標辨識來裝卸鋼卷的機器視覺系統,以及能透過RFID讀取鋼卷身份,再準確偵測鋼卷的中心位置來吊起鋼卷的智慧型吊夾,而整體鋼卷的吊運排程與吊運路徑最佳化,則是由天車指揮系統來規劃,中鋼同時也建置用來傳輸車籍資料、整合裝卸車資料的雲端倉儲管理系統。達到天車操作全自動化之後,中鋼也設置了主動式安全防護機制,透過深度學習來偵測天車下方是否有人行走,並在行駛過程中自動辨識障礙物與閃避。
建置了無人天車帶來的一大效益,就是能在出貨的前一晚,由機器自動理貨,將要出廠的貨物就近放置到出貨的位置,「天車不會休息,人會休息,在不需出貨的時間先理貨,就能加速出貨的效率。」許朝詠說。
中鋼的無人天車也早在2018年就投入運作,至今已經完成超過數十萬顆鋼卷的吊運。不只自建自用,中鋼也將這套無人天車系統外銷到中國鋼廠,2019年就已經銷售了12套系統,今年武漢肺炎疫情期間,更是遠距協助客戶調機、將系統落地。
不過,這個貼近鋼鐵業需求的無人天車,實際上並無用到深度學習技術,「深度學習雖然是好工具,但不一定是最佳工具,也不是唯一的工具。」許朝詠表示,由於天車在裝卸鋼卷時,需要非常精準的定位,誤差超過5公分就可能吊不起鋼卷,但深度學習在位置偵測的精準度上並無優勢,加上判斷速度較慢,「傳統影像處理有些技術,應用上會比深度學習來的更好。」
換句話說,不是用最新、最強的技術就好,不同應用場景有其最合適使用的技術,這就是許朝詠歸納的第二大AI導入經驗。
3大AI導入經驗之三:從自動化、人機協作到智慧化循序漸進落地AI
最後,許朝詠也提出一項正在建置的AI應用,也就是出貨前的鋼卷智能檢核,雖然目前僅有初步成果,但這項應用實際影響了傳統檢核作業流程的轉變。
許朝詠解釋,鋼鐵在包裝、裝載完成之後,還需要檢核包裝外觀,以避免客戶收貨後發現包裝瑕疵,因而對品質產生疑慮。為了檢核來自23個倉庫的貨品,中鋼設置了4個主要的檢核站,共計17個車道、每個車道配置4名檢核人員,車輛在倉庫裝載貨品後會先前往檢核站,由人工檢查外觀是否破損,並核對貨品身份與數量,完成檢核才能出廠。
但傳統的人力檢核方式,不僅人力成本較高,大量出貨時載貨司機也常需排隊等待,更佔用了約兩個倉庫的空間來檢核。對此,中鋼試圖透過AI智能檢核的方式,將傳統的檢核中心改以一個雲端檢核中心來取代,在每個倉庫出貨前,直接將鋼卷影像上傳雲端,由檢核人員從雲端照片來判斷是否有瑕疵,若無即可放行車輛出廠,不只能加快檢核效率,檢核人員也能更輕鬆完成任務。
而這些檢核照片的篩選,則是先拍攝車輛進入檢核站的影像,經過運算後,自動擷取鋼卷正面、側面品質最佳的影像,透過自動檢放系統來提供檢核人員檢驗,經實測後,完成8張鋼卷照片的檢驗大約只要8秒。
許朝詠表示,將檢核流程雲端化只是第一步,中鋼下一步要利用檢放系統,在檢核人員雲端判讀照片狀況的同時,蒐集異常照片的資料,再利用深度學習的技術來訓練瑕疵辨識模型,進一步將檢核流程自動化且智慧化,來取代人工作業。
「邁向智慧化的過程,很多人會想要一步到位,但很困難,如果能用AI先實現局部的自動化,透過人機協作來提升作業效率,並同步搜集資料,就會對智慧製造的實現有很大的幫助。」許朝詠認為,AI落地並非一蹴可幾,需要一步步優化原先的作業流程,蒐集足夠的資料,才能實現智慧化的目標,這也是他提出的第三大AI導入經驗。
附圖:應用場景的序號本身可能有模糊、手寫字、油漆過淡等問題。
透過資訊的串接,來克服AI序號辨識可能不夠精準的問題。
透過即時原料粒徑大小分析來調整物料分佈,進而提升高爐燃燒效率。
人工檢核過程。
透過檢放系統來檢驗熱軋鋼卷的包裝外觀。
資料來源:https://www.ithome.com.tw/news/141163?fbclid=IwAR3UUiJ0rpr7aUf8d2FmGZaZp3_e4E-9esf6ZOD1iiA20Id4ZYo1-hK7iwc
深度學習 字體 在 軟體開發學習資訊分享 Facebook 的最佳貼文
今日內容摘要
✅ Haskell 基礎教學的程式碼和練習
✅ 全面的深度學習/人工智慧和機器學習教學
✅ 從單一來源的配置為多個平台建立相同的機器映像檔工具
✅ 一個專業設計的集合,UI 元件建立在一個框架無關的技術上
✅ 用程式碼製作的幾何無襯線字體
✅ 新的 NodeJS 的端到端測試框架
✅ 使用視覺化和動畫來解釋 GPT3 的運作原理
✅ 一種解釋任意機器學習模型輸出的博弈論方法
✅ 一個自動化機器學習生命週期的開源 AutoML 工具套件,包括特徵工程,神經結構搜尋,模型壓縮和超參數調整
✅ 受 Prometheus 啟發的水平可伸縮的、高可用的、多用戶的日誌聚合系統
✅ 直接從 Docker 部署到 AWS 的外掛工具
✅ 微服務的 Go 標準程式庫
✅ 用於安全智能合約開發的程式庫
✅ 為物聯網簡化建構行動和 Web 應用程式一個物聯網平台
https://softnshare.com/soft-share-179-gpt3/
深度學習 字體 在 李開復 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】