當訓練神經網路時, 加快您的訓練的技巧其中之一 是正規化您的輸入 讓我們來看看這是什麼意思 假設訓練集有兩個輸入特徵 所以輸入特徵 x 是二維 這個是您訓練集的散佈圖 正規化您的輸入相當於兩個步驟 第一步是減去 或者讓平均值為零 所以您設 mu = 1 除以 m 總和於 i of X(i) 所以這是一個向量, 然後 X 設為 X - mu 對於每一個訓練例子 這個意思是您移動 這個訓練集到 0 平均值 第二步驟是正規化它們的變異 請注意這裡的 x1 特徵 有比較大的變異 比起X2特徵來說 所以我們要做的是設 sigma = 1 除以 m 總和 X(i)**2 這個是逐元素的平方 現在 sigma 平方是一個向量 是每一個特徵的變異數 請注意我們已經減去平均值 所以 X(i) 平方 逐元素平方只是變異數 然後拿每一個例子 除以這個向量 sigma 平方 在圖形上, 您最終會變成這樣 現在 X1 跟 X2 的變異都會等於 1 一個提示, 如果您用這樣來 按比例增減您的訓練資料, 那使用相同的 mu 跟 sigma 平方來正規化您測試集, 是吧? 特別是, 您不希望 用不同的正規化在訓練集跟 在測試集中 不管這個值是什麼跟 不管這個值是什麼, 用這這兩個 公式, 所以您用一樣的方式來 按比例縮放您的測試集, 而不是 計算 mu 跟 sigma 平方 分別在訓練集跟測試集 因為您要您的資料 不管是訓練或是測試例子 經歷同樣的轉換 用相同的 mu 跟 sigma 平方從訓練集計算出來的 為什麼做這些事 ? 為什麼我們要對輸入特徵做正規化 記得成本函數是 像在右上角定義的 實際上如果您用非正規化 輸入特徵, 它會 您個成本函數會像這樣 像是被壓扁的碗, 拉得很長的成本函數 而您試著要找的做小值會在這裡 但如果您的特徵是很不同的比例 假設 x1 特徵 從1 到 1000, 而 x2特徵從 0 到 1 那會變成對於 參數 w1 跟 w2 的比例或是值的範圍 會非常不同 也許這兩個軸應該是 w1 跟 w2 但我畫成 w 跟 b 那您的成本函數會是 細長的碗狀像那樣 如果您畫這個函數的等高線圖 您會得到一個 細長的函數像那樣 但如果您正規化這些特徵 那您的成本函數 平均來說或比較對稱 如果您跑梯度下降 在左邊的成本函數 那您會使用很小的學習率 因為如果您 在這裡,梯度下降會 需要很多步來回擺動 在最後終於找到到最小值的路徑 而如果您的是球型的等高線圖 不管您從何開始 梯度下降都可以 直接到最小值 您可以用比較大的步伐在梯度下降 而不需要 來回擺動像在左邊一樣 當然, 實務上 w 是高維度的向量 試著畫成 2D 並不能正確表示所有直觀 但大約的直觀是 您的成本函數會比較圓 比較容易最佳化當您的特徵 都在類似的比例時 不是從 1 到 1000, 從 0 到 1, 但 大部分從 -1 到 1 或者彼此類似的變異 這樣會讓您的成本函數 J 比較容易跟快速來最佳化 實際上如果一個特徵假設 X1 範圍從0 到 1 X2範圍 從 -1 到 1 X3 範圍從 1 到 2 這些都是類似的範圍 這個會作用得很好 就是對於那些 很大不同的範圍像是 一個從 1 到 1000, 另一個從 0 到 1, 這個 真的會傷害您的最佳化演算法 但只要設定它們都是 平均值 0 跟變異數 1, 像是我們 上個投影片做的, 保證所有的特徵在類似的比例上 通常會幫助您的 學習演算法跑得更快速 如果您個輸入特徵 有不同的比例 也許一些特徵是從 0 到 1 有些從 1 到 1000, 那正規化您的特徵是很重要的 如果您的特徵來自於類似的比例 那這個步驟比較不重要 雖然執行這個 正規化的步驟幾乎不會有任何 傷害, 所以我總是會執行它 如果我不確定是否 會幫助我加快 訓練我的演算法 所以這是正規化您的輸入特徵 下一段,讓我們繼續談論一些方式 來加快訓鍊您的神經網路