AI通識:機(jī)器學(xué)習(xí)、大數(shù)據(jù)與數(shù)據(jù)預(yù)處理入門)
簡介這份人工智能通識入門課程面向零基礎(chǔ)學(xué)習(xí)者、培訓(xùn)學(xué)員以及希望系統(tǒng)梳理AI知識框架的初學(xué)者圍繞人工智能基本概念、發(fā)展脈絡(luò)與大數(shù)據(jù)背景下的落地應(yīng)用展開。內(nèi)容從達(dá)特茅斯會議、符號主義與連接主義講到深度學(xué)習(xí)并覆蓋機(jī)器學(xué)習(xí)中的監(jiān)督學(xué)習(xí)、無監(jiān)督學(xué)習(xí)和強(qiáng)化學(xué)習(xí)以及自然語言處理、計(jì)算機(jī)視覺、機(jī)器人技術(shù)等核心分支同時(shí)結(jié)合Hadoop、Spark說明數(shù)據(jù)預(yù)處理、特征工程與模型訓(xùn)練流程并討論隱私泄露、就業(yè)變革、算法歧視等倫理議題。資源包含1個(gè)PDF文件壓縮包約6.25MB適合電腦端閱讀、檢索和課堂投屏。課程配有實(shí)例演示與實(shí)戰(zhàn)項(xiàng)目思路可幫助讀者把數(shù)據(jù)清洗、模型構(gòu)建、效果驗(yàn)證到結(jié)果分析的過程串聯(lián)起來形成對AI應(yīng)用鏈路的整體認(rèn)識。目前已有385人學(xué)習(xí)適合作為AI入門自學(xué)、企業(yè)培訓(xùn)預(yù)習(xí)或高校課堂補(bǔ)充材料。1. 第一次聽到“人工智能”就發(fā)怵先把這門通識課講明白很多人第一次聽到“人工智能”這四個(gè)字腦子里先冒出科幻片里的機(jī)器人緊接著就是一句“我數(shù)學(xué)不好肯定學(xué)不會”。其實(shí)把 AI 想成一臺特別能吃數(shù)據(jù)的機(jī)器更貼切扔進(jìn)去的是大量原始數(shù)據(jù)出來的是“預(yù)測”和“判斷”它不會憑空變聰明靠的是你喂給它的東西夠多、夠干凈。這門 AI 初體驗(yàn)通識基礎(chǔ)課要解決的正是“先搞懂它是什么”這道門檻它不教你造機(jī)器而是帶你認(rèn)全機(jī)器的每個(gè)部件認(rèn)全人工智能的四大分支再講清大數(shù)據(jù)為什么是它的燃料。適合完全零基礎(chǔ)、想弄明白 AI 到底怎么運(yùn)轉(zhuǎn)、又不想一上來就被公式勸退的人包括做產(chǎn)品、做運(yùn)營、做業(yè)務(wù)以及準(zhǔn)備換方向的自學(xué)者。2. 為什么要學(xué)AI通識先認(rèn)清一條流水線上的五個(gè)工位我?guī)н^不少零基礎(chǔ)的同學(xué)最常見的開局是聽說“機(jī)器學(xué)習(xí)”火直接去找實(shí)戰(zhàn)教程裝環(huán)境裝了兩天報(bào)錯(cuò)十幾條第三天就放棄了。問題不在難度在于跳過了一張地圖。通識課的價(jià)值不是讓你立刻會寫模型而是讓你在動手之前就知道自己站在流水線的哪一段、下一步該往哪走遇到陌生的詞不至于心里發(fā)慌。AI 和大數(shù)據(jù)這兩個(gè)詞天天在會議上出現(xiàn)真正讓人焦慮的往往不是不會寫代碼而是聽不懂別人在說什么。2.1 一個(gè)AI項(xiàng)目長什么樣從原始數(shù)據(jù)到“能用”的五步把任何一個(gè) AI 項(xiàng)目拆開基本都是同一條流水線采集數(shù)據(jù)、清洗與特征處理、訓(xùn)練模型、評估效果、交付使用。用做菜打比方特別順——先去買菜收集數(shù)據(jù)回來洗切配清洗和特征工程下鍋炒訓(xùn)練嘗一口咸淡評估最后端上桌交付。新手最容易犯的錯(cuò)是把全部注意力放在“炒”這一步以為模型越高級菜越好吃結(jié)果菜是爛的鍋再好也沒用。這門課的結(jié)構(gòu)其實(shí)就是按這條流水線排的先講人工智能的定義和歷史讓你知道這鍋菜是怎么演變來的再講機(jī)器學(xué)習(xí)、自然語言處理、計(jì)算機(jī)視覺、機(jī)器人技術(shù)這四個(gè)分支相當(dāng)于認(rèn)識廚房里的幾口鍋接著用一整段講大數(shù)據(jù)也就是買菜和洗切最后談倫理與社會影響相當(dāng)于食品安全。你按這個(gè)順序聽腦子里會自動形成一張流程圖而不是一堆散裝名詞。我建議零基礎(chǔ)的人聽到這一步就做一件小事拿張紙把“數(shù)據(jù)—清洗—模型—評估—使用”這五個(gè)詞橫著寫一行后面每學(xué)一個(gè)概念就往對應(yīng)的位置塞。學(xué)監(jiān)督學(xué)習(xí)塞到“模型”學(xué)特征工程塞到“清洗”。塞滿一輪你對 AI 的認(rèn)知就不再是黑匣子了。提示這條流水線是所有 AI 項(xiàng)目的通用骨架后面學(xué)任何具體技術(shù)都先問自己一句“它屬于哪一步”比死記定義有效得多。2.2 三個(gè)流派、幾次浪潮歷史不是背年份是理解“為什么變成今天這樣”課程開頭會講人工智能這個(gè)概念在 1956 年的一次學(xué)術(shù)會議上被正式提出然后一路講到現(xiàn)在。很多人聽歷史就走神覺得跟動手無關(guān)其實(shí)這段最有信息量它解釋了為什么今天學(xué) AI 必須先把數(shù)據(jù)搞清楚。早期的主流思路叫符號主義說白了就是“人把規(guī)則寫死”。專家系統(tǒng)是這條路的高峰——把老師傅的判斷經(jīng)驗(yàn)一條條寫成規(guī)則機(jī)器照著查。問題很快就暴露了規(guī)則少的時(shí)候挺好用一旦業(yè)務(wù)變復(fù)雜規(guī)則庫膨脹到幾千條改一條牽動十條維護(hù)成本高得嚇人。這就像給新同事寫操作手冊寫到第八十頁手冊本身成了負(fù)擔(dān)。后來思路轉(zhuǎn)了叫連接主義通俗說就是“別寫規(guī)則了給例子讓它自己總結(jié)”。給機(jī)器一萬張標(biāo)好“貓”“狗”的照片它自己去找區(qū)分規(guī)律這就是機(jī)器學(xué)習(xí)。再往后數(shù)據(jù)越來越多、算力越來越便宜把模型的層數(shù)堆深就成了深度學(xué)習(xí)。所以這門課把大數(shù)據(jù)放在四大分支之后講不是隨便排的——數(shù)據(jù)是這條技術(shù)路線真正的地基。我第一次學(xué)的時(shí)候把這段歷史當(dāng)成故事聽過后才反應(yīng)過來三種流派其實(shí)對應(yīng)三種解決問題的策略——規(guī)則能寫清就用規(guī)則寫不清就給例子例子多到人看不完就上深度學(xué)習(xí)。拿到一個(gè)實(shí)際需求先判斷它屬于哪一種比盲目套模型靠譜。2.3 三類人學(xué)它的理由不一樣對號入座再決定投入多少技術(shù)方向的人學(xué)通識是為了打地基。你會寫代碼不等于懂 AI很多 bug 的根源是對“模型在干什么”沒有概念。先把四大分支和數(shù)據(jù)處理流程過一遍再去學(xué)具體算法進(jìn)度會快很多。非技術(shù)崗學(xué)通識目標(biāo)更實(shí)際能判斷一個(gè)需求靠不靠譜能跟技術(shù)同事對上話。比如業(yè)務(wù)方提“能不能做個(gè)自動識別圖片里商品的系統(tǒng)”你聽完課程里的計(jì)算機(jī)視覺部分至少知道要問三件事——有多少標(biāo)注好的圖、識別到什么精度算合格、錯(cuò)了會有什么后果。這三問一出口溝通效率立刻不一樣。學(xué)生和轉(zhuǎn)行的人學(xué)通識核心是建立詞匯表。AI 領(lǐng)域的術(shù)語密度極高同一個(gè)詞在不同上下文里意思還不一樣。通識課的作用是把這些詞先過一遍讓你以后看文檔、看教程時(shí)不至于每段都卡住。學(xué)到什么程度算夠我的標(biāo)準(zhǔn)是能用自己的話把一條完整的流水線講給外行聽就算過關(guān)了。3. 零基礎(chǔ)第一步把AI的四個(gè)核心分支拆成看得懂的樣子四大分支聽起來唬人其實(shí)就是機(jī)器處理四類不同的東西表格和數(shù)字機(jī)器學(xué)習(xí)、文字自然語言處理、圖像計(jì)算機(jī)視覺、物理動作機(jī)器人技術(shù)。這一章我們挨個(gè)拆每個(gè)分支都配上最小可跑的示例或者可跟做的步驟你不需要裝任何環(huán)境用最普通的 Python 就能跟著敲一遍。別小看這些“玩具代碼”它們的骨架和工業(yè)級系統(tǒng)是同一套。3.1 機(jī)器學(xué)習(xí)三種學(xué)習(xí)方式對應(yīng)三種生活場景監(jiān)督學(xué)習(xí)是帶答案的練習(xí)冊給一堆題目每道題后面都寫著正確答案機(jī)器做完自己對答案慢慢調(diào)整。無監(jiān)督學(xué)習(xí)是沒有答案的一筐襪子沒人告訴你該怎么分機(jī)器自己按顏色、材質(zhì)找出幾堆。強(qiáng)化學(xué)習(xí)是打游戲沒人教你怎么走走對了給分走錯(cuò)了扣分靠試錯(cuò)摸索策略。課程里講這三類重點(diǎn)不是公式而是讓你判斷手里的問題屬于哪一類。下面這段代碼是監(jiān)督學(xué)習(xí)的最小形態(tài)二十行不到卻包含了“訓(xùn)練”和“預(yù)測”兩個(gè)核心動作# 最小號的監(jiān)督學(xué)習(xí)從已有答案的數(shù)據(jù)里找出一個(gè)判斷門檻 # 每條數(shù)據(jù)是 (學(xué)習(xí)時(shí)長, 是否通過)1 表示通過0 表示沒通過 history [(1, 0), (2, 0), (3, 1), (5, 1), (6, 1), (8, 1)] # 訓(xùn)練從 0 到 9 逐個(gè)試門檻看哪個(gè)門檻判斷錯(cuò)的次數(shù)最少 best_line, best_miss None, len(history) 1 for line in range(0, 10): miss 0 for hours, passed in history: guess 1 if hours line else 0 # 用當(dāng)前門檻做判斷 if guess ! passed: # 和真實(shí)答案比一比 miss 1 if miss best_miss: # 記錄目前最好的門檻 best_line, best_miss line, miss print(找到的分界線學(xué)習(xí)時(shí)長 , best_line, 小時(shí)) print(在歷史數(shù)據(jù)上判斷錯(cuò)的次數(shù), best_miss) # 使用來了一個(gè)學(xué)了 4 小時(shí)的新同學(xué)用這條分界線做預(yù)測 new_hours 4 print(預(yù)測結(jié)果, 通過 if new_hours best_line else 未通過)先看history這個(gè)列表它就是訓(xùn)練數(shù)據(jù)每一行都帶著“正確答案”這正是監(jiān)督學(xué)習(xí)里“監(jiān)督”兩個(gè)字的由來。中間的循環(huán)在做的事叫訓(xùn)練把門檻從 0 試到 9每次數(shù)一數(shù)判斷錯(cuò)幾條留下錯(cuò)得最少的那條。這里的line就是模型參數(shù)miss就是評估指標(biāo)range(0, 10)是搜索范圍——真實(shí)項(xiàng)目里參數(shù)不止一個(gè)搜索方式也更聰明但邏輯完全一樣。最后三行是預(yù)測模型訓(xùn)練完就固定下來拿新數(shù)據(jù)套進(jìn)去出結(jié)果。你如果把new_hours改成 7結(jié)果會翻轉(zhuǎn)這就是模型在做判斷。想再進(jìn)一步把數(shù)據(jù)換成“學(xué)習(xí)時(shí)長 出勤率”兩個(gè)特征門檻就從一條線變成一個(gè)平面這也是為什么特征越多模型越復(fù)雜。注意這段代碼在 6 條數(shù)據(jù)上找門檻很容易找到一條“剛好全對”的線但換一批新數(shù)據(jù)就未必準(zhǔn)。真實(shí)項(xiàng)目一定要留一部分?jǐn)?shù)據(jù)不參與訓(xùn)練專門用來檢驗(yàn)。3.2 自然語言處理先讓機(jī)器把一句話數(shù)成數(shù)字機(jī)器不認(rèn)識“人工智能”這四個(gè)字的含義它只認(rèn)識數(shù)字。所以自然語言處理的第一步永遠(yuǎn)是同一個(gè)動作把文本變成數(shù)字。課程里講文本分析和智能對話系統(tǒng)底層都是從這一步長出來的。# 把一句話變成機(jī)器能算的東西統(tǒng)計(jì)每個(gè)詞出現(xiàn)幾次 sentence AI 通識課 講 人工智能 和 大數(shù)據(jù) 也 講 人工智能 的應(yīng)用 tokens sentence.split() # 英文式的按空格切分中文要先分詞再走這一步 counter {} for w in tokens: counter[w] counter.get(w, 0) 1 # 出現(xiàn)一次加一 for w, c in sorted(counter.items(), keylambda x: -x[1]): # 按次數(shù)從多到少排 print(w, c)跑完你會看到“講”和“人工智能”各出現(xiàn)兩次其余各一次。這個(gè)結(jié)果叫詞頻把詞頻按固定順序排成一行數(shù)字就得到一條“特征向量”——機(jī)器終于可以拿它去算距離、做分類了。新手在這里最容易卡的是中文分詞英文單詞之間天然有空格中文沒有所以要先切成詞。這一步的準(zhǔn)確率直接決定后面所有環(huán)節(jié)的效果“人工智能”被切成“人工”和“智能”意思就跑偏了。另一個(gè)常見誤區(qū)是以為詞頻越高越重要實(shí)際上“的”“了”“是”這類詞出現(xiàn)最多卻毫無信息量工程上要把它們先剔掉。3.3 計(jì)算機(jī)視覺和機(jī)器人先看懂“機(jī)器看見”和“機(jī)器動手”的三步計(jì)算機(jī)視覺的流程可以壓縮成三步把圖像變成數(shù)字矩陣、從矩陣?yán)锾崛√卣鬟吘?、紋理、顏色分布、根據(jù)特征做判斷。你不需要一上來就理解卷積先記住“圖像在機(jī)器眼里就是一堆數(shù)字”這件事后面所有術(shù)語都能掛在這句話上。機(jī)器人技術(shù)多一層感知、決策、執(zhí)行。感知靠傳感器決策靠算法執(zhí)行靠機(jī)械結(jié)構(gòu)三者缺一環(huán)機(jī)器人就動不利索。課程里講這部分時(shí)更強(qiáng)調(diào)“自主性和適應(yīng)性”說白了就是環(huán)境變了它還能不能干成活。零基礎(chǔ)摸這兩個(gè)分支我的建議是先不寫代碼去找現(xiàn)成的在線演示改改輸入看輸出怎么變上傳不同亮度的照片看識別結(jié)果怎么抖換個(gè)口音看語音識別錯(cuò)在哪兒。這種“調(diào)參數(shù)看反應(yīng)”的過程比讀十頁原理更容易建立直覺也能讓你真正體會到為什么數(shù)據(jù)質(zhì)量決定了天花板。4. 大數(shù)據(jù)先上手一次數(shù)據(jù)預(yù)處理的完整走法課程中間有一大段講大數(shù)據(jù)很多初學(xué)者會跳過覺得那是搞基礎(chǔ)設(shè)施的人關(guān)心的事。恰恰相反這是零基礎(chǔ)最該花時(shí)間的地方。數(shù)據(jù)預(yù)處理做得好用最笨的模型也能出結(jié)果數(shù)據(jù)一塌糊涂再高級的模型也是白搭。這一章我們用一個(gè)十幾行的數(shù)據(jù)集把清洗、填補(bǔ)、除異常、歸一化這四步完整走一遍全部用 Python 標(biāo)準(zhǔn)庫不用裝任何東西。4.1 大數(shù)據(jù)的三條特性落到表格上才看得懂課程里講大數(shù)據(jù)有體量大、速度快、種類多這三個(gè)特性光背沒用得知道它們各自對應(yīng)什么麻煩特性大白話你手上的表現(xiàn)新手要注意什么體量大一臺機(jī)器放不下、算不完文件幾百 MB 起打開就卡別用一次性讀入內(nèi)存的寫法要分塊處理速度快數(shù)據(jù)源源不斷進(jìn)來每秒都有新記錄昨天的數(shù)據(jù)今天就舊了清洗邏輯要能重復(fù)跑別手工改表格種類多表格、文本、圖片、日志混在一起同一個(gè)用戶的信息散在五個(gè)系統(tǒng)里先統(tǒng)一字段名和單位再談分析這三條湊在一起就逼出了“大數(shù)據(jù)處理平臺”這個(gè)東西。課程里會講到分布式存儲組件和內(nèi)存計(jì)算引擎這類平臺它們的作用用一句話概括單機(jī)算不動的時(shí)候把同一份清洗邏輯拆給很多臺機(jī)器一起算。你入門階段不用碰它們但要知道自己寫的清洗代碼將來是要搬到這種平臺上去跑的所以盡量別依賴“手工點(diǎn)兩下”的操作。4.2 第一次數(shù)據(jù)預(yù)處理四步清洗一步都別跳先看這份故意做臟的小數(shù)據(jù)缺失、重復(fù)、異常各來一個(gè)# 一份很小的學(xué)習(xí)行為數(shù)據(jù)里面埋了三種典型的臟數(shù)據(jù) raw [ {user: A, hours: 12, score: 88}, {user: B, hours: 3, score: 51}, {user: C, hours: None, score: 66}, # 缺失值 {user: D, hours: 9, score: 79}, {user: D, hours: 9, score: 79}, # 重復(fù)記錄 {user: E, hours: 400, score: 95}, # 異常值明顯錄錯(cuò)了 {user: F, hours: 7, score: 72}, ]第一步去重、第二步補(bǔ)缺失寫在一起# 第一步去重。同一個(gè)人、同樣的數(shù)值只保留一條 seen, clean set(), [] for r in raw: key (r[user], r[hours], r[score]) if key not in seen: seen.add(key) clean.append(r) # 第二步缺失值用中位數(shù)補(bǔ)。中位數(shù)比平均數(shù)抗異常值 hours sorted(r[hours] for r in clean if r[hours] is not None) mid len(hours) // 2 median hours[mid] if len(hours) % 2 else (hours[mid - 1] hours[mid]) / 2 for r in clean: if r[hours] is None: r[hours] median print(清洗后條數(shù), len(clean), 用于填補(bǔ)的中位數(shù), median)去重那段的key是關(guān)鍵它決定“什么算重復(fù)”。這里用三個(gè)字段組合實(shí)際項(xiàng)目里通常用用戶 ID 加時(shí)間戳因?yàn)橥粋€(gè)人在不同時(shí)間產(chǎn)生兩條記錄是正常的。補(bǔ)缺失那段用的是中位數(shù)sorted排序后取中間那個(gè)數(shù)如果你把median換成平均數(shù)400 這個(gè)異常值會把結(jié)果拉高補(bǔ)進(jìn)去的值就失真了。第三步除異常、第四步歸一化# 第三步用 IQR 規(guī)則找出異常值超出的直接剔除 vals sorted(r[hours] for r in clean) q1, q3 vals[len(vals) // 4], vals[len(vals) * 3 // 4] low, high q1 - 1.5 * (q3 - q1), q3 1.5 * (q3 - q1) clean [r for r in clean if low r[hours] high] # 第四步歸一化把學(xué)習(xí)時(shí)長壓到 0 到 1 之間方便和分?jǐn)?shù)字段一起比較 lo min(r[hours] for r in clean) hi max(r[hours] for r in clean) for r in clean: r[hours_norm] round((r[hours] - lo) / (hi - lo), 3) for r in clean: print(r)1.5這個(gè)系數(shù)是統(tǒng)計(jì)學(xué)里的慣例想更嚴(yán)格可以改成1.0想更寬松改成3.0改完直接看剔掉了多少條——如果一下剔掉一半說明要么數(shù)據(jù)真有問題要么閾值太緊。歸一化的公式是“減去最小值再除以跨度”目的是讓不同量綱的字段能放在一起比較學(xué)習(xí)時(shí)長是幾十分?jǐn)?shù)是幾十分不縮放的話模型會偏向數(shù)值大的那個(gè)。注意歸一化必須用清洗后的數(shù)據(jù)算最大值最小值順序反過來結(jié)果就不對了。跑完這段你會看到 E 那條 400 小時(shí)的記錄被剔除C 的缺失被補(bǔ)上D 的重復(fù)只剩一條。這四步幾乎出現(xiàn)在每一個(gè)真實(shí)項(xiàng)目里區(qū)別只是數(shù)據(jù)量和判斷標(biāo)準(zhǔn)。4.3 特征工程不是玄學(xué)把“原始字段”變成“能判斷的指標(biāo)”清洗完只是數(shù)據(jù)能用了要讓模型判斷得準(zhǔn)還得靠特征工程——從原始字段里造出更有信息量的指標(biāo)。課程里專門講了這部分我用一個(gè)最常見的例子說明# 從報(bào)名日期和最近登錄日期造一個(gè)新特征沉默天數(shù) from datetime import date def days_silent(signup, last_login, todaydate(2024, 6, 1)): d1 date.fromisoformat(signup) d2 date.fromisoformat(last_login) return (today - d2).days print(days_silent(2024-01-10, 2024-02-01)) # 輸出 121 print(days_silent(2024-01-10, 2024-05-30)) # 輸出 2單看“最近登錄日期”這個(gè)字段機(jī)器沒法判斷誰快流失了轉(zhuǎn)成“沉默天數(shù)”之后數(shù)字越大風(fēng)險(xiǎn)越高模型一下就能用上。類似的還有從金額和訂單數(shù)算客單價(jià)、從注冊時(shí)間和首次購買時(shí)間算轉(zhuǎn)化時(shí)長。經(jīng)驗(yàn)之談是花在造特征上的時(shí)間回報(bào)通常比換模型高得多。我第一次做項(xiàng)目時(shí)死磕模型參數(shù)調(diào)了兩天漲了兩個(gè)點(diǎn)后來加了一個(gè)“最近三十天登錄次數(shù)”的特征直接漲了十幾個(gè)點(diǎn)那之后我才真正信了這句話。5. 新手避坑AI入門最容易翻車的五個(gè)地方這一章是我這些年帶人時(shí)反復(fù)見到的翻車現(xiàn)場按“現(xiàn)象—原因—解決”給你捋一遍??吹臅r(shí)候不用記等你真動手卡住了回頭翻對應(yīng)那條就行。5.1 概念上最容易擰巴的三個(gè)地方第一個(gè)坑把 AI 當(dāng)成“會自己思考”的東西。現(xiàn)象是總覺得模型“應(yīng)該懂我的意思”結(jié)果一跑發(fā)現(xiàn)它連常識都沒有。原因在于宣傳口徑把“預(yù)測”說成了“理解”實(shí)際上模型做的只是一件事——根據(jù)見過的數(shù)據(jù)找一個(gè)函數(shù)把輸入映射到輸出。解決的思路很簡單每次看到 AI 產(chǎn)品的宣傳就把它的輸入和輸出寫下來中間那部分它到底在算什么通常一行就能說清。想通這一點(diǎn)你對模型能力的預(yù)期就不會飄。第二個(gè)坑以為數(shù)學(xué)不好就學(xué)不了。現(xiàn)象是打開教程看到公式就關(guān)掉反復(fù)幾次之后徹底放棄。原因是把研究路線當(dāng)成了入門路線學(xué)術(shù)論文要推公式入門只需要知道這個(gè)公式在解決什么問題。解決的辦法是先建立流程感把數(shù)據(jù)、模型、評估這幾個(gè)環(huán)節(jié)的位置記住公式留到用得上時(shí)再補(bǔ)。我?guī)н^文科背景的同學(xué)從這條路徑走兩周就能獨(dú)立跑完一個(gè)完整的小項(xiàng)目。第三個(gè)坑把大數(shù)據(jù)和 AI 當(dāng)成兩件事?,F(xiàn)象是學(xué)完 AI 分支就不管數(shù)據(jù)了一動手發(fā)現(xiàn)八成時(shí)間花在處理數(shù)據(jù)上心態(tài)直接崩。原因是這兩塊在不同章節(jié)里講看起來像兩個(gè)主題實(shí)際上是發(fā)動機(jī)和燃料的關(guān)系。解決的辦法是記住一句話模型決定上限數(shù)據(jù)決定能不能摸到上限。遇到效果不好先查數(shù)據(jù)再查模型。提示這三個(gè)坑的共同點(diǎn)是預(yù)期錯(cuò)位。把預(yù)期調(diào)對學(xué)習(xí)曲線會平緩很多。5.2 動手時(shí)最容易翻車的兩個(gè)地方第四個(gè)坑模型在練習(xí)數(shù)據(jù)上準(zhǔn)得離譜一換新數(shù)據(jù)就崩?,F(xiàn)象是訓(xùn)練集上準(zhǔn)確率九十幾實(shí)際用起來一塌糊涂。原因叫過擬合——模型把訓(xùn)練數(shù)據(jù)里的噪聲也背下來了換一批數(shù)據(jù)自然不認(rèn)。解決的做法是留出一部分?jǐn)?shù)據(jù)完全不參與訓(xùn)練專門做檢驗(yàn)數(shù)據(jù)量小的時(shí)候還可以輪著留一部分出來驗(yàn)多輪取平均。看到“訓(xùn)練集近乎滿分”這種結(jié)果第一反應(yīng)應(yīng)該是警惕而不是高興。第五個(gè)坑同樣的代碼跑兩次結(jié)果不一樣?,F(xiàn)象是昨天跑出的數(shù)字今天復(fù)現(xiàn)不了懷疑自己寫錯(cuò)了。原因是數(shù)據(jù)順序沒固定、隨機(jī)過程沒設(shè)種子或者清洗步驟的先后順序變過。解決的辦法是把清洗過程寫成固定順序的腳本每次從原始數(shù)據(jù)重跑一遍別手工改中間結(jié)果涉及隨機(jī)的環(huán)節(jié)統(tǒng)一定一個(gè)固定值。血淚經(jīng)驗(yàn)是一次我在臨時(shí)文件上手工改了幾行后來怎么也對不上之前的結(jié)論重跑了一整天才找回來。注意任何讓你“手工改一下再看”的操作都記得先備份原始數(shù)據(jù)。原始數(shù)據(jù)永遠(yuǎn)只讀是所有結(jié)論的后悔藥。6. 下一步學(xué)什么從通識走向第一個(gè)能跑的模型通識課聽完最容易出現(xiàn)的狀態(tài)是“都懂了但不會動”。我的建議是別急著扎進(jìn)算法細(xì)節(jié)按下面這條路走四周每周只做一件事做完再進(jìn)下一周階段時(shí)間干什么過關(guān)標(biāo)準(zhǔn)一第 1 周把四大分支各用三句話講給外行聽對方能聽懂并追問一個(gè)問題是好事二第 2 周找一份幾百行的公開小數(shù)據(jù)做完整清洗能說清每一條被剔除的記錄為什么剔除三第 3 周用最簡單的算法跑一次訓(xùn)練加評估能解釋訓(xùn)練集和檢驗(yàn)集分?jǐn)?shù)為什么不一樣四第 4 周把上面的流程寫成一段可以重復(fù)跑的腳本換臺機(jī)器、換個(gè)時(shí)間跑結(jié)果一致第三周那個(gè)“最簡單的算法”別挑花哨的。像我第 3 章寫的那種找門檻的思路就夠用重點(diǎn)是跑通整條鏈路讀數(shù)據(jù)、清洗、切分、訓(xùn)練、評估、看結(jié)果。跑通一次你對前面所有概念的理解會突然落地。如果想再往前一步可以挑一個(gè)自己真正關(guān)心的場景做小項(xiàng)目比如分析一批文本評論的情緒傾向或者識別一批圖片里有沒有某個(gè)物體。場景一定要小小到你三天能看到結(jié)果做完了再回頭補(bǔ)理論動力會強(qiáng)得多。最忌諱的是一上手就選“做一個(gè)智能客服”這種大目標(biāo)做兩周還在配環(huán)境。我自己有個(gè)習(xí)慣每學(xué)一個(gè)新東西先在紙上畫那條五步流水線把新概念塞進(jìn)對應(yīng)的工位塞不進(jìn)去就說明還沒真懂。從那以后我每次開新項(xiàng)目都強(qiáng)制走一遍“原始數(shù)據(jù)只讀、清洗寫成腳本、檢驗(yàn)集單獨(dú)留出”這三條幾乎沒再翻過車。希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取