Course1-Week1:機器學習簡介

Course1-Week1:機器學習簡介

文章目錄

  • Course1-Week1:機器學習簡介
    • 1. 課程簡介
      • 1.1 課程大綱
      • 1.2 Optional Lab的使用 (Jupyter Notebooks)
      • 1.3 歡迎參加《機器學習》課程
    • 2. 機器學習簡介
      • 2.1 機器學習定義
      • 2.2 有監督學習
      • 2.3 無監督學習
    • 3. 線性回歸模型
      • 3.1 線性回歸模型
      • 3.2 代價函數
    • 4. 梯度下降法
      • 4.1 梯度下降法
      • 4.2 用于線性回歸的梯度下降

  • 筆記主要參考B站視頻“(強推|雙字)2022吳恩達機器學習Deeplearning.ai課程”。
  • 該課程在Course上的頁面:Machine Learning 專項課程
  • 課程資料:“UP主提供資料(Github)”、或者“我的下載(百度網盤)”。

好文:

  • 2023吳恩達機器學習: 上班族35 天學完~學習筆記 (1.1 監督學習)——系列文章
  • 入門機器學習/深度學習要多長時間?

1. 課程簡介

1.1 課程大綱

圖1-1-1 課程大綱

??和國內大部分課程結構不同,本套機器學習課程分為3個Course,每個Course又分為若干個Week,如上圖所示。筆記的結構與課程大綱相同,由于每個Week中又包含10~20節不等的講解視頻,所以單篇筆記就包含單個Week的內容。本篇筆記就對應了課程的Course1-Week1(上圖中深紫色)。

1.2 Optional Lab的使用 (Jupyter Notebooks)

??為了幫助同學們在學習過程中更直觀的理解機器學習中的概念,本套課程同步包含一系列實驗。這些實驗無需初學者有什么數學或代碼基礎,但需要使用 “Jupyter Notebooks” 打開。Jupyter Notebooks 是當今機器學習和數據科學從業者最廣泛使用的工具,是進行編寫代碼、實驗、嘗試的默認環境。所以為了使用這些課程資料,需要我們在自己的瀏覽器中搭建 Jupyter Notebooks 環境,并用來測試一些想法。下面是配置環境(安裝Anaconda)、打開課程資料的方法:

  1. 配置Jupyter Notebook環境:參考“輔助筆記-Jupyter Notebook的安裝和使用”。
  2. 打開課程資料(如下圖):使用“Anaconda Prompt”cd到存放課程資料的目錄,然后 jupyter notebook打開即可。

注1:課程資料下載見“UP主提供資料(Github)”、或者“我的下載(百度網盤)”。
注2:課程資料中包含課程中的實驗、Quiz、PPT,可自行查閱。

圖1-1-2 使用Jupyter Notebook打開課程資料

1.3 歡迎參加《機器學習》課程

機器學習是一門讓計算機在 沒有明確編程 的情況下學習的科學。機器學習已經出現在生活的方方面面:

  • 消費者應用領域:
  1. 搜索引擎的排名機制。
  2. 社交軟件為圖片添加標簽。
  3. 流媒體服務推薦機制,比如B站的“首頁通知書”。
  4. 語音助手返回的答案,如問Siri附近的餐廳有哪些。
  5. 郵箱自動識別垃圾郵件。
  • 工業領域:
  1. 優化風力渦輪機發電。
  2. AI醫學影像診斷。
  3. Landing AI將計算機視覺應用到工廠中,幫助檢查流水線產品質量等。

機器學習廣泛應用的原因:

  1. 很多場景無法寫出顯式程序。大多數情況下,我們不知道如何編寫顯式程序執行更有趣的事情,如網絡引擎的推薦結果、識別人類語言、醫學診斷、自動駕駛。我們所知道的唯一做這些事情的方法就是讓機器學會自己做。
  2. AGI(Artifical General Intelligence, 通用人工智能)的創造應該要用到某種“學習算法”。通俗來說,AGI就是一個和正常人類智力相當的人工智能。“AGI”這種概念令廣大AI研究者興奮,雖然預計大概還需要50~500年才能實現,但大多數AI研究者認為最接近該目標的方法就是使用某種“學習算法(learning algorithms)”,雖然可能需要深入研究人類大腦的工作方式來尋找靈感,但機器學習算是進入AI領域的第一步。

注:學習算法(learning algorithm),是機器學習算法、深度學習算法等具備學習能力的算法的統稱。

??本門課程廣泛介紹了現代機器學習,包括監督學習(多元線性回歸、邏輯回歸、神經網絡和決策樹)、無監督學習(聚類、降維、推薦系統)以及人工智能和機器學習創新(評估和調整模型、采用以數據為中心的方法來提高性能等)在硅谷的最佳實踐。具體將:

  1. 使用流行的機器學習庫 NumPy 和 scikit-learn 在 Python 中構建機器學習模型。
  2. 構建和訓練用于預測和二元分類任務的監督機器學習模型,包括線性回歸和邏輯回歸。

2. 機器學習簡介

2.1 機器學習定義

??Arthur Samuel 在1950s就編寫出了可以進行自我學習的跳棋程序(checkers playering program)。下面是他給出的“機器學習”的定義(非正式定義):

英文:Field of study that gives computers the ability to learn without being explicitly programmed. – Arthur Samuel (1959)
翻譯:使計算機能夠在沒有明確編程的情況下學習的研究領域。

Question
If the checkers program(跳棋程序) had been allowed to play only ten games (instead of tens of thousands) against itself, a much smaller number of games, how would this have affected its performance?
× Would have made it better
√ Would have made it worse

啟示:一般情況下,學習的機會越多,算法的表現越好。

本節課將學習很多機器學習算法,內容包括:

  1. 有監督學習(Supervised learning):實際應用中,有監督學習使用最廣泛,并取得了最快速的進步和創新。Course1、Course2聚焦于有監督學習
  2. 無監督學習(Unsupervised learning):Course3聚焦于無監督學習
  3. 強化學習(Reinforcement learning)”:由于應用沒有前兩者廣泛,所以本課程沒有簡單介紹。
  4. 使用“學習算法”的實用建議(很重要):“學習算法”本身只是一種工具,比工具本身更重要的是 如何正確使用這些工具。即使是某些大公司中最熟練的機器學習團隊,可能也會因為最開始找錯了算法方向而導致多年的成果付諸東流。所以本課程不僅會講解機器學習算法,同時也會介紹最熟練的機器學習工程師是如何構建系統的,以及一些機器學習應用的最佳案例。

注:學習算法(Learning Algorithm),是機器學習算法、深度學習算法等具備學習能力的算法的統稱。

2.2 有監督學習

??“有監督學習”指的是學習從 輸入 x x x(一個或多個) 映射到 輸出 y y y 的算法。有監督學習算法的關鍵在于首先要提供正確的樣本示例供算法學習,然后算法便可以針對未見過的輸入,輸出相應的預測結果。下面是一些有監督學習的在現實生活中的示例:

  • 垃圾郵件過濾器:email --> 垃圾郵件?(0/1)
  • 語音識別:語音 --> 文本
  • 機器翻譯:英文 --> 中文
  • 廣告投遞:廣告、用戶信息 --> 用戶點擊?(0/1)
  • 自動駕駛:圖片、雷達信息 --> 其他車輛位置
  • 視覺檢測:手機圖片 --> 有缺陷?(0/1)

“有監督學習”中兩類最常見的典型問題就是 回歸(Regression)分類(Classification)。兩者的主要區別在于:

  • 回歸問題:要預測的結果有無窮種可能,比如在一段范圍內都有可能的數字取值。
  • 分類問題:只有有限種可能的輸出結果,比如前面提到的判斷某個郵件是否為垃圾郵件。

注1:任何預測數字的“有監督學習”模型,就是解決所謂的“回歸問題”。
注2:在“分類問題”中,輸出“類別”的英文是classcategory,兩者可以混用。

下面將給出這兩個問題的示例。

回歸問題示例:房價預測

??“房價預測”就是根據房子的面積計算價格。下圖中的“紅叉”就是預先提供的有正確映射關系的樣本,“藍色擬合線”就相當于算法學習輸入樣本,最后通過擬合線得到房價便是“預測”,這便是“有監督學習”的完整流程。注意到這個回歸問題的輸出(房價)可以是任意數字,于是便有無窮種可能。

圖1-1-3 房價預測問題示意圖
  1. 直線擬合:根據擬合直線,可以預測房屋面積 750 feet 2 750\text{feet}^2 750feet2 對應的價格大約為 $$150k$。
  2. 曲線擬合:根據擬合曲線,可以預測房屋面積 750 feet 2 750\text{feet}^2 750feet2 對應的價格大約為 $$200k$。

分類問題示例:乳腺癌檢測

??乳腺癌檢測問題就是根據輸入的一系列信息,如腫瘤塊的大小、患者年齡、腫瘤塊的厚度、細胞大小的均勻性、細胞形狀的均勻性等,來判斷是否為惡性腫瘤(0表示良性/1表示惡性)。下面給出“單輸入的乳腺癌檢測”、“兩輸入的乳腺癌檢測”示意圖:

單輸入的乳腺癌檢測:輸入是“腫瘤的大小”,輸出是“良性”、“惡性-類型1”、“惡性-類型2”。
兩輸入的乳腺癌檢測:輸入是“腫瘤的大小”、“患者年齡”,輸出是“良性”、“惡性”。

圖1-1-4 單輸入的乳腺癌檢測問題
圖1-1-5 兩輸入的乳腺癌檢測問題

2.3 無監督學習

無監督學習:
Data only comes with inputs x x x, but not output labels y y y. Algorithm has to find structure in the data.

??在“有監督學習”之后,“無監督學習”也被廣泛應用起來。“無監督學習”不是要找映射關系,而是想要從 沒有標記的數據集 中發現一些有趣的東西,比如這個數據集中有什么 可能的模式或結構。無監督學習的主要類型有:

  1. 聚類(Clustering):將相似的數據點分成一組。
  2. 異常檢測(Anomaly detection):。有非常多的應用,比如在金融系統的詐騙檢測中,異常時間、異常交易可能是欺詐。
  3. 降維(Dimensionality reduction):在盡可能丟失少的信息的前提下,將大數據集壓縮成小得多的數據集。

Question:
Of the following examples, which would you address using an unsupervised learning algorithm?
× Given email labeled as spam/not spam, learn a spam filter.
√ Given a set of news articles found on the web, group them into sets of articles about the same story.
√ Given a database of customer data, automatically discover market segments and group customers into different market segments.
× Given a dataset of patients diagnosed as either having diabetes or not, learn to classify new patients as having diabetes or not.

知識點:有監督學習給數據和標簽,重點在于對新輸入預測出標簽;無監督學習只給數據,重點在于自行分組。

下面給出“聚類”的3個示例,后續會再介紹“異常檢測”和“降維”這兩種無監督學習的示例:

聚類算法示例1:新聞分類
??“谷歌新聞”的任務就是將每天數十萬的新聞進行聚類,找到提到相似詞的文章并將其分組。很酷的是,聚類算法可以自己計算出哪些詞暗示了這些文章屬于同一個組,并且谷歌新聞的員工也沒有事先告訴算法有哪些組。如下圖所示,panda、twin、zoo都是相似的詞,這些文章被歸為一類。

圖1-1-6 聚類算法示例——谷歌新聞文章分類

聚類算法示例2:基因分類

??下圖所示的基因圖譜,每一列表示一個人的全部基因,每一行表示一種基因,不同的顏色表示該基因的活躍程度,這些基因包括瞳孔顏色、身高、不愛吃西藍花/包菜/萵苣等。聚類算法僅根據這些基因數據,將人進行分組,進而找出“基因上很相似的人”。

圖1-1-7 聚類算法示例——基因分類

聚類算法示例3:客戶分群

??還有一個很常見的聚類算法示例就是,根據客戶信息數據庫,將不同的客戶劃分進不同的細分市場,以便更有效的服務客戶。比如深度學習團隊“dot AI” 想知道 dot AI社區 中的人們,參加課程、訂閱通知、參加AI活動等的動機是什么。于是通過調研團隊便發現了擁有不同動機的人,比如:提升技能、發展事業、緊隨AI潮流、或者哪個都不是。這個例子中調研團隊就相當于無監督學習算法。

圖1-1-8 聚類算法示例——客戶分群

本節Quiz:

  1. Which are the two common types of supervised learning? (Choose two)
    A.Classification √
    B.Clustering
    C.Regression √
  2. Which of these is a type of unsupervised learning?
    A.Regression
    B.Classification
    C.Clustering √

3. 線性回歸模型

3.1 線性回歸模型

??本節將通過“線性回歸模型”(Linear Regression Model)介紹“有監督學習”的整個過程,這也是本課程的第一個模型。下面是常用的機器學習術語:

  • Training Set(數據集):用于訓練模型的數據集。
  • x x x:input variable(輸入變量) / feature(特征) / input feature(輸入特征),也就是“特征值”。
  • y y y:output variable(輸出變量) / target variable(目標變量),也就是“目標值”。
  • m m m:表示訓練樣本的數量。
  • ( x , y ) (x,y) (x,y):單個訓練樣本。
  • ( x ( i ) , y ( i ) ) (x^{(i)},y^{(i)}) (x(i),y(i)):第 i i i 個訓練樣本。上標加括號是為了和求冪次區別開來。
  • y ^ \hat{y} y^?:表示對 y y y 的估計或預測。
圖1-1-9 有監督學習的過程示意圖
  • 以前把 f f f 叫做hypothesis(假設),但是老師不建議這種叫法,而是稱之為function(函數)。

??上圖給出了整個“有監督學習”的流程,也就是“learning algorithm”根據輸入的“訓練集”得到一個 函數模型 f f f,于是便可以通過 f f f 來對 輸入 x x x 進行預測 輸出 y ^ \hat{y} y^?。而“線性回歸模型”就是假設 函數模型 f f f 為一條直線,因為簡單易用,這可能是世界上使用最廣泛的學習算法,后續也會在其他機器學習模型中見到線性回歸模型。
??“線性回歸”只是解決回歸問題的方法之一,其他方法會在Course2中會介紹。現在以上一小節“房價預測”問題舉例,若使用“線性回歸模型”假設 f f f 就是一條直線,于是該模型就可以寫成

f w , b ( x ) = w x + b f_{w,b}(x)=wx+b fw,b?(x)=wx+b

表示函數 f f f x x x 為函數輸入,其輸出 y ^ \hat{y} y^? 取決于 w w w b b b 的值。

  • w w w b b b:模型的參數(parameter)。
  • f w , b ( x ) f_{w,b}(x) fw,b?(x)通常會簡寫為 f ( x ) f(x) f(x)
圖1-1-10 線性回歸模型

3.2 代價函數

??顯然,雖然現在已經構建好了“線性回歸模型”,但是過訓練集的直線有無數種,如何找出 與訓練數據最擬合的線 還不明確,于是本節就來介紹 代價函數(cost funtion)。在機器學習中,代價函數用于 衡量模型的好壞,最簡單、最常用的代價函數是“平均誤差代價函數”(Squared error cost function):
J ( w , b ) = 1 2 m ∑ i = 1 m ( y ^ ( i ) ? y ( i ) ) 2 = 1 2 m ∑ i = 1 m ( f w , b ( x ( i ) ) ? y ( i ) ) 2 \begin{aligned} J(w,b) &= \frac{1}{2m} \sum_{i=1}^{m}(\hat{y}^{(i)}-y^{(i)})^2\\ &= \frac{1}{2m} \sum_{i=1}^{m}(f_{w,b}(x^{(i)})-y^{(i)})^2 \end{aligned} J(w,b)?=2m1?i=1m?(y^?(i)?y(i))2=2m1?i=1m?(fw,b?(x(i))?y(i))2?

  • w w w b b b:模型的參數。
  • i i i:訓練樣本的標號。
  • m m m:訓練樣本的總數。
  • y ( i ) y^{(i)} y(i):第 i i i 的樣本的真實目標值。
  • y ^ ( i ) \hat{y}^{(i)} y^?(i):對 y ( i ) y^{(i)} y(i) 的預測目標值。
  • 除以 2 m 2m 2m:按照慣例,機器學習中的平均代價函數會除以 2 m 2m 2m 而非 m m m,這是為了使后續的計算更加簡潔。

??現在來直觀的看一下,最小化代價函數如何找到與訓練數據最擬合的線。首先簡化模型,設置參數 b = 0 b=0 b=0,并假設訓練數據只有三個點。下圖給出了不同的 w w w 所對應不同的 代價 J ( w ) J(w) J(w),顯然在 w = 1 w=1 w=1 處代價最小,直線也最擬合:

min ? w J ( w ) = 1 2 m ∑ i = 1 m ( f w , b ( x ( i ) ) ? y ( i ) ) 2 = 1 2 m ∑ i = 1 m ( w x ( i ) ? y ( i ) ) 2 \begin{aligned} \min_{w} J(w) &= \frac{1}{2m} \sum_{i=1}^{m}(f_{w,b}(x^{(i)})-y^{(i)})^2\\ &= \frac{1}{2m} \sum_{i=1}^{m}(wx^{(i)}-y^{(i)})^2 \end{aligned} wmin?J(w)?=2m1?i=1m?(fw,b?(x(i))?y(i))2=2m1?i=1m?(wx(i)?y(i))2?

圖1-1-11 使代價函數最小

??那回到剛才的問題中,同時將 w w w b b b 都考慮在內,并引入更多的訓練數據,便可以得到下面的代價函數示意圖。為了更好的將代價函數可視化,同時使用“等高線圖”和“3D圖”來展示不同的 w w w b b b 所對應不同的 代價 J ( w , b ) J(w,b) J(w,b)。“3D圖”類似一個“碗”,顯然在“碗”的底部,代價函數最小:

圖1-1-12 可視化代價函數

上圖見課程資料:C1_W1_Lab04_Cost_function_Soln.ipynb

  • bug1:ModuleNotFoundError: No module named ‘ipympl’
    解決辦法:新打開一個“Anaconda Prompt”輸入conda install ipympl,然后重啟內核重新運行即可。

注:圖片很多,運行后會有點卡,若加載不出來圖片可以嘗試重新運行。

本節Quiz:

  1. For linear regression, the model is f w , b ( x ) = w x + b f_{w,b}(x)= wx + b fw,b?(x)=wx+b. Which of the following are the inputs, or features, that are fed into the model and with which the model is expected to make a prediction?
    × m m m
    × ( x , y ) (x,y) (x,y)
    x x x
    × w w w and b b b.
  2. For linear regression, if you find parameters w w w and b b b so that J ( w , b ) J(w, b) J(w,b) is very close to zero, what can you conclude?
    × This is never possible - there must be a bug in the code.
    √ The selected values of the parameters w w w and b b b cause the algorithm to fit the training set > really well.
    × The selected values of the parameters w w w and b b b cause the algorithm to fit the training set > really poorly.

??雖然現在距離完成“線性回歸問題”非常接近了,但是上述是通過人眼來直觀的尋找代價函數的最小點,實際上要畫出有足夠多細節的3D圖需要計算大量的 J ( w , b ) J(w,b) J(w,b),而很多 J ( w , b ) J(w,b) J(w,b)點 都是沒用的,這顯然不劃算。下一節就來介紹如何通過計算有限的 J ( w , b ) J(w,b) J(w,b)點 來找到代價函數最小點。

4. 梯度下降法

4.1 梯度下降法

??梯度下降(Gradient Desent)常用于尋找某函數(比如代價函數)的最大值、最小值。梯度下降不僅用于線性擬合,也用于訓練如神經網絡(Course2)等深度學習模型、以及一些最大型、最復雜的人工智能模型。下面以前面的 min ? w , b J ( w , b ) \min_{w,b} J(w,b) minw,b?J(w,b) 來舉例,梯度下降算法的步驟為:

  1. 選擇初始點,一般在取值范圍內選取簡單的整數,如 w = 1 , b = 0 w=1,b=0 w=1,b=0
  2. 沿著 J J J 的“負梯度”方向,不斷迭代計算 w w w b b b。之所以沿著“負梯度”方向,是因為沿該方向下降速度最快(steepest descent, 最速下降)。如下:
    w = w ? α ? ? w J ( w , b ) b = b ? α ? ? b J ( w , b ) \begin{aligned} w &= w - \alpha \frac{\partial }{\partial w} J(w,b)\\ b &= b - \alpha \frac{\partial }{\partial b} J(w,b) \end{aligned} wb?=w?α?w??J(w,b)=b?α?b??J(w,b)?
  • α \alpha α:學習率(Learning rate),用于控制步長。通常為介于0~1之間的一個小的正數,如0.01。
  • ? ? w J ( w , b ) \frac{\partial }{\partial w} J(w,b) ?w??J(w,b):代價函數對 w w w 的偏導數(Partial Derivative),其取負值表明的方向可以使 J J J 下降。
  • ? ? b J ( w , b ) \frac{\partial }{\partial b} J(w,b) ?b??J(w,b):代價函數對 b b b 的偏導數,意義同上。

注意:上面是 同時更新(Simultaneously update),也就是使用舊的 ( w , b ) (w,b) (w,b) 直接分別計算出新的 w w w b b b;而不是先更新 w w w,再使用這個新的 w w w 計算新的 b b b

  1. 直到 w w w b b b的負梯度 都為 0 0 0(或者 0 0 0的鄰域內),即可認為找到 J J J 的最低點。

??下面兩張圖很直觀的給出了整個梯度下降法的過程。在下左圖中,首先固定 b = 0 b=0 b=0,只分析 w w w 對代價函數 J ( w ) J(w) J(w) 的影響。可以發現,若當前 w w w在最低點右側,由于“負梯度”小于0,于是下一個 w w w將向左移動;反之若當前 w w w在最低點左側,由于“負梯度”大于0,下一個 w w w將向右迭代。只要選擇合適的學習率 α \alpha α,最終就可以找到最低點所在的 w w w。在下右圖中,則進一步同時考慮 w w w b b b,可以發現每次也是沿著“負梯度”下降最快的方向,最終可以到達最低點所在處。這個迭代的過程就是“梯度下降”,類似于“下山”的過程。

圖1-1-13 理解梯度下降法的過程

注意點1:學習率

學習率 α \alpha α 的選取將會對梯度下降的效率產生巨大影響。若 α \alpha α 選取的不好,甚至會導致無法實現梯度下降。

  • α \alpha α 選取的太小,會導致下降的速度非常慢(意味著需要計算很長時間),但最終也會收斂(converge)到最小值。
  • α \alpha α 選取的太大,很可能會導致在極值點附近反復橫跳甚至越來越遠,也就是不會收斂甚至發散(diverge)。
  • α \alpha α 選取的合適,越接近代價函數極小值,梯度越來越小,就會導致步長越來越小。
圖1-1-14 學習率對代價函數的影響

注意點2:多個極值點

??在前面的討論中,一直使用平方誤差項作為代價函數。對于 平方誤差項 的代價函數,都是“凸函數”或“凸面”。但若代價函數非凸時,可能就會存在不止一個極值。如上圖1-1-13中,不同的起始點,就會導致不同的收斂速度或極值。所以 代價函數盡量要選擇凸函數

4.2 用于線性回歸的梯度下降

??介紹完梯度下降法,現在來總結一下,將前面的線性回歸模型、代價函數、梯度下降算法結合起來,按照下面公式不斷迭代直至其收斂:
Linear?regression?model : f w , b ( x ) = w x + b Cost?function : J ( w , b ) = 1 2 m ∑ i = 1 m ( f w , b ( x ( i ) ) ? y ( i ) ) 2 Gradient?descent repeat?until?convergence : { w = w ? α ? ? w J ( w , b ) = w ? α m ∑ i = 1 m [ ( f w , b ( x ( i ) ) ? y ( i ) ) ? x ( i ) ] b = b ? α ? ? b J ( w , b ) = b ? α m ∑ i = 1 m ( f w , b ( x ( i ) ) ? y ( i ) ) \begin{aligned} \text{Linear regression model} &: \quad f_{w,b}(x) = wx+b\\ \text{Cost function} &: \quad J(w,b) = \frac{1}{2m} \sum_{i=1}^{m}(f_{w,b}(x^{(i)})-y^{(i)})^2\\ \begin{aligned} \text{Gradient descent} \\ \text{repeat until convergence} \end{aligned} &: \left\{\begin{aligned} w &= w - \alpha \frac{\partial }{\partial w} J(w,b) = w - \frac{\alpha}{m} \sum_{i=1}^{m}[(f_{w,b}(x^{(i)})-y^{(i)})·x^{(i)}] \\ b &= b - \alpha \frac{\partial }{\partial b} J(w,b) = b - \frac{\alpha}{m} \sum_{i=1}^{m}(f_{w,b}(x^{(i)})-y^{(i)}) \end{aligned}\right. \end{aligned} Linear?regression?modelCost?functionGradient?descentrepeat?until?convergence??:fw,b?(x)=wx+b:J(w,b)=2m1?i=1m?(fw,b?(x(i))?y(i))2:? ? ??wb?=w?α?w??J(w,b)=w?mα?i=1m?[(fw,b?(x(i))?y(i))?x(i)]=b?α?b??J(w,b)=b?mα?i=1m?(fw,b?(x(i))?y(i))??

從“等高線圖”的角度來看,梯度下降法的迭代過程可能如下圖紅色箭頭所示,從起始點不斷收斂到最小值,并且注意到這個過程也是越來越慢的:

圖1-1-15 梯度下降法求解線性回歸模型

??最后說明一下,由于在使用梯度下降法求解問題的過程中,每次迭代都會使用到所有的訓練集數據計算代價函數及其梯度,所以這個梯度下降的過程稱為“批量梯度下降(Batch gradient descent)”。當然本問題較為簡單,在其他數據更為復雜的模型中,為了簡化梯度下降法的計算量,每次只使用訓練集的子集

本節Quiz:

  1. Gradient descent is an algorithm for finding values of parameters w and b that minimize the cost function J ( w , b ) J(w,b) J(w,b).
    repeat?until?convergence : { w = w ? α ? ? w J ( w , b ) b = b ? α ? ? b J ( w , b ) \text{repeat until convergence}: \left\{\begin{aligned} w &= w - \alpha \frac{\partial }{\partial w} J(w,b) \\ b &= b - \alpha \frac{\partial }{\partial b} J(w,b) \end{aligned}\right. repeat?until?convergence:? ? ??wb?=w?α?w??J(w,b)=b?α?b??J(w,b)?

When ? J ( w , b ) ? w \frac{\partial J(w,b)}{\partial w} ?w?J(w,b)? is a negative number (less than zero), what happens to w w w after one update step?
× w w w stays the same
× It is not possible to tell if w w w will increase or decrease.
× w w w decreases.
w w w increases.

  1. For linear regression, what is the update step for parameter b b b?
    × b = b ? α m ∑ i = 1 m [ ( f w , b ( x ( i ) ) ? y ( i ) ) ? x ( i ) ] b = b - \frac{\alpha}{m} \sum_{i=1}^{m}[(f_{w,b}(x^{(i)})-y^{(i)})·x^{(i)}] b=b?mα?i=1m?[(fw,b?(x(i))?y(i))?x(i)]
    b = b ? α m ∑ i = 1 m ( f w , b ( x ( i ) ) ? y ( i ) ) b = b - \frac{\alpha}{m} \sum_{i=1}^{m}(f_{w,b}(x^{(i)})-y^{(i)}) b=b?mα?i=1m?(fw,b?(x(i))?y(i))

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

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

相關文章

golang學習筆記——使用映射

文章目錄 使用映射聲明和初始化映射添加項訪問項刪除項映射中的循環 使用映射 Go 中的映射是一個哈希表,是鍵值對的集合。 映射中所有的鍵都必須具有相同的類型,它們的值也是如此。 不過,可對鍵和值使用不同的類型。 例如,鍵可以…

Apach Ozone部署

前言 最近由于工作需要,要部署一套ozone。我自己對hadoop這套體系不是很熟悉,所以過程磕磕碰碰,好不容易勉強搭起來,所以記錄一下部署方式 準備 三臺主機,主機均已安裝jdk、hdfs,相關的安裝配置就不另外寫…

python二叉樹鏈樹_樹的鏈式存儲結構

二叉鏈樹是一種樹狀數據結構,其中每個節點最多有兩個子節點,分別稱為左子節點和右子節點。每個節點包含一個數據元素和指向其左右子節點的指針。二叉鏈樹可以是空樹,也可以是具有以下特點的非空樹: 1. 每個節點最多有兩個子節點。…

netstat

netstat 命令用于顯示網絡狀態 參數說明: -a或--all 顯示所有連線中的Socket,默認不顯示LISTEN相關 -n 拒絕顯示別名,能顯示數字的全部轉化成數字 -e或--extend 顯示網絡擴展信息(User,Inode) -p或--programs 顯示正在使用So…

計算機組成原理 the one day

1.計算機系統硬件軟件 cpu運算器控制器 1個字(word)16bit; difference 1個字節(Byte)bit; 2.cpu主頻(時鐘頻率)1/cpu時鐘周期 CPI執行一條指令所需的時間周期數。 執行一條程序的…

JavaEE 多線程01

為什么引入多線程? 首先進程已經能很好的完成多任務這個情景下的并發編程了,那為什么又引入多線程呢? 這是因為在一些情景下,我么需要大量的創建和銷毀進程來完成一些任務,此時多進程對系統的開銷就會很大了. 假設有這樣一個場景,服務器同時接收到很多個服務請求,這個時候服務…

Python基礎教程: sorted 函數

嗨嘍,大家好呀~這里是愛看美女的茜茜吶 sorted 可以對所有可迭代的對象進行排序操作, sorted 方法返回的是一個新的 list,而不是在原來的基礎上進行的操作。 從新排序列表。 👇 👇 👇 更多精彩機密、教程…

taro h5 ios解決input不能自動獲取焦點拉起鍵盤

描述:頁面中有個按鈕,點擊跳轉到第二個頁面(有input),能直接獲取焦點拉起鍵盤輸入 安卓: 直接用focus() ios: focus無效,必須手動拉起 原理: 點擊按鈕的時候拉起一…

一元三次方程求解——浮點數二分

題目描述 思路 根與根之差的絕對值>1。可以得出距離為1的區間最多只有一個根若存在2個數x1和x2&#xff0c;且x1 < x2&#xff0c;f(x1) x f(x2) < 0&#xff0c;則(x1, x2)之間一定有一個根我們可以遍歷每一個區間為1的范圍&#xff0c;先判斷左端點是否是根&#x…

K8s client go 創建CRD的informer

背景 需要監聽K8s中CRD資源的變動, 做出相應的處理, 需要針對 CRD資源建立informer 實現 dynamicClient 是 創建的K8s的client, 這里使用的是 Unstructured 接収的CRD的結果, 加工的時候使用了convertUnstructuredProject 加工了一下, convertUnstructuredProject 實現下面提…

如何進行網絡通信和套接字編程?

網絡通信和套接字編程 引言 網絡通信是計算機科學中的重要概念&#xff0c;它使得不同計算機之間可以進行數據交換和信息傳遞。套接字編程是一種實現網絡通信的方法&#xff0c;它提供了一套標準的接口&#xff0c;使得應用程序可以通過網絡進行數據傳輸。本文將詳細介紹網絡…

Python---global關鍵字---設置全局變量

global 英 /?ɡl??b(?)l/ adj. 全球的&#xff0c;全世界的&#xff1b;全面的&#xff0c;整體的&#xff1b;&#xff08;計算機&#xff09;全局的&#xff1b;球形的 需求&#xff1a;如果有一個數據&#xff0c;在函數A和函數B中都要使用&#xff0c;該怎么辦&…

【PyGIS】使用阿里AIEarth快速下載指定區域指定年份的土地利用數據

說明 中國逐年土地覆蓋數據集(CLCD) 由武漢大學的楊杰和黃昕教授團隊基于Landsat影像制作了中國逐年土地覆蓋數據集(annual China Land Cover Dataset, CLCD),數據包含1985—2021年中國逐年土地覆蓋信息。研究團隊基于Landsat長時序衛星觀測數據,構建時空特征,結合隨機森…

Linux常用命令——blockdev命令

在線Linux命令查詢工具 blockdev 從命令行調用區塊設備控制程序 補充說明 blockdev命令在命令調用“ioxtls”函數&#xff0c;以實現對設備的控制。 語法 blockdev(選項)(參數)選項 -V&#xff1a;打印版本號并退出&#xff1b; -q&#xff1a;安靜模式&#xff1b; -v&…

藍橋杯官網填空題(重合次數)

問題描述 在同一天中, 從上午 6 點 13 分 22 秒到下午 14 點 36 分 20 秒, 鐘表上的 分針和秒針一共重合了多少次? 注意時針、分針、秒針都圍繞中心敳勻速運動。 答案提交 這是一道結果填空的題&#xff0c;你只需要算出結果后提交即可。本題的結果為一 個整數, 在提交答案…

【正則插件】前端正則插件以及預覽插件推薦

1&#xff09; 2&#xff09; any-rule Pegex Previewer 下載好插件之后 在代碼層右鍵選擇 選擇你需要的正則表達式&#xff0c;隨后可以使用第二個插件 正則表達式插入之后頂部會有 Test Regex.. 點擊會出現以下內容 將他 ctrl a 刪除&#xff0c;輸入你對應的正則表達…

@Validated注解的作用代碼示例

當使用Spring框架進行參數驗證時&#xff0c;可以通過Validated注解來觸發參數驗證。以下是一個簡單的示例&#xff0c;演示了如何在Spring控制器中使用Validated注解來驗證請求的參數&#xff1a; 首先&#xff0c;假設有一個簡單的User類作為請求的數據模型&#xff1a; pu…

電腦序列號查詢

電腦序列號是廠商給每臺電腦分配的一個產品識別碼&#xff0c;也稱為S/N&#xff08;Serial Number&#xff09;。主要用來查詢電腦的出廠日期、保修狀態、生產產地、產品配置等信息。電腦序列號查詢有以下幾種方法&#xff1a; 1、電腦機箱外殼&#xff1b; 2、系統信息/命令…

前端下載文件鏈接

前端下載文件鏈接 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title> </hea…

CSS 文字溢出:ellipsis在IE上不起效果

單行文本的溢出顯示省略號 p {overflow: hidden;text-overflow: ellipsis;white-space: nowrap; }多行文本的溢出顯示省略號 方法一&#xff1a; p {display: -webkit-box;-webkit-box-orient: vertical;-webkit-line-clamp: 3;overflow: hidden;text-overflow: ellipsis; }…