因爲最近ChatGPT的爆火,然後我發現大多數非相關專業的朋友(比如我的幾個室友)對深度學習的原理其實並不瞭解,就像做一個類似科普/討論貼的系列,講講自己對機器學習和深度學習的粗淺理解——計算機是如何從一個只會加減乘除的機器發展到今天具有ChatGPT這樣的"智能"的。
樓主本人是魔都某酒吧舞的相關專業大二學生,已經學過的課程有《計算機組成原理》,《數據結構》,《算法設計》,《機器學習》等(之後還有更多專業課),也有自行學習過cv和nlp領域的基礎知識,算是對相關方面有一點點相當粗淺的理解。當然水平和眼界終究有限,所以恐怕講的也會是漏洞百出,希望各路大佬能在評論區指正。以下是第一章開頭:
一.起源 圖靈與可計算理論
首先是要介紹圖靈的哲學思想(現在早已發展成爲計算機科學的一大分支,可計算理論)——什麼樣的問題是可以用算法解決的?
"算法"一詞,在數據結構課上有着詳細而恰當的定義,但對於我們理解計算機來說,這需要掌握最核心的一點就夠了——算法就是按順序一步一步解決問題的方法。
在過去,如牛頓的時代,數理問題的解決主要依賴於天才們一閃而過的靈感與驚人的創造力。對於複雜問題,他們總能以敏銳的洞察力和高超的技巧發現問題的核心,並將其轉化爲容易理解和處理的問題加以解決。這一過程固然富有觀賞性,但我們也不難想象缺乏這般天賦的大多數人對此只能望洋興嘆。
然而算法的思想與上述過程截然相反——算法是設計好的步驟的集合,任何人(當然,機器也一樣)只要按順序執行這些步驟,最終都能得到正確答案。最早的算法可以追溯到美索不達米亞人,那是他們已經發明瞭求根號二的算法,讀者可以自行百度其步驟並思考如何證明其正確性。後來人們發現許多問題都可以用算法解決,比如求圓周率π,比如判斷一個數是否是素數(我們姑且忽略算法複雜度的問題)。
總之,算法思想隱含的是這樣一個"福音"——不管你有多白癡,只要你會做加減乘除比較等基本運算,你都可以按照步驟一步步拆解並最終得到一個複雜問題的正確答案。這不僅對"你"是福音,對機器同樣如此。
當然你可能會問到底什麼是"基本運算"?微積分是基本運算嗎?矩陣的奇異值分解是基本運算嗎?事實上我們發現這些複雜的數學計算大部分可以用一系列的加減乘除等更基本的運算加以實現或近似,而實數的加減乘除等運算又可以進一步分解爲若干步二進制運算(之所以要繼續分解,自然是因爲計算機只能處理二進制數)——沒錯,這也是一種"算法"——如何用一串有序的二進制運算實現整數的加減乘除。
那麼"基本運算"到底是哪些二進制運算,除此外還有沒有別的運算或操作也是必要的?這些在《計算機組成原理》中會有詳細的討論,該問題核心可能是指令集的完備性,在此就不展開了。
至此我們討論了算法的底層思想和它是如何賦能計算機的。但我們並不欲進一步回答開篇的問題——"什麼樣的問題是可以用算法解決的"。這是一個相當複雜而困難的問題,還與數學七大難題中的"NP猜想"有關,至少筆者沒有能力觸及哪怕這一問題的皮毛。但是總體的方向已經確定了——確實有許許多多的問題可以用算法解決——對我們來說,剩下的任務就是將算法國度的疆界不斷擴大,不斷地用算法去解決各種各樣的問題。
更多遊戲資訊請關註:電玩幫遊戲資訊專區
電玩幫圖文攻略 www.vgover.com