發布時間: 2024-05-27 19:55:26
大家學習到了神經網絡可以通過邏輯回歸之類的算法來對輸入進行預測。那么神經網絡自己如何判斷預測結果是否準確呢? 這一步是非常重要的,因為只有知道自己預測結果是否準確,才能夠對自身進行調整,好讓結果越來越準確,這就是學習的過程。我們人類學習也應該遵循這個道理,如果一個人一直不停的學,但是不驗證自己的學習成果,那么有可能學的方向或學習方法都是錯的,不停地學但是結果卻都白學了。
那么努力學習 為什么還是考不好?
要驗證學習成果,就要判斷預測結果是否準確,本篇文章介
紹的損失函數(loss function) 就是干這事的。
我們先回顧一下上一篇文章中學到的預測算法,如上圖。是預測的結果。上面的i角標指代某一個訓練樣本(本系列教程都會這樣來指代某一個訓練樣本),例如,
是對于訓練樣本
的預測結果。
現在,讓我們看看可以用什么損失函數來衡量我們的預測算法做得怎么樣--判斷預測的精準度高不高。損失函數運算后得出的結果越大,那么預測就與實際結果的偏差越大,即預測精度越不高。理論上你可以用上面的公式作為損失函數--預測結果y與實際結果y的差的平方再乘以二分之一。但是在實踐中人們通常不會用它,具體為什么,后面的文章再給大家講解,現在講了你們也理解不了。實踐中我們使用的損失函數的公式如下
前面的“差平方”公式比較直接,就是 y^越接近有,那么運算得出的結果就越小,那么就說明預測越準確,即損失越小。努力使損失函數的值越小就是努力讓預測的結果越準確。其實這個新的損失函數的作用是一樣的。具體數學上面的細節我就不講解了,因為文章的目的是讓大家明白人工智能的原理,學會如何實現人工智能。實現一個原理的具體數學公式
是很多的,就像做菜,你明白了它的基本原理后,你可以用各種手段把菜做出來,你可以按照網上的教程做,你也可以自己創造新的做法。對于一些數學當前不好的同學,完全不用怕,因為這些算法都是公開的,而且都有現成的代碼可以直接用。后面會給大家展示。
上面對單個訓練樣本我們定義了損失函數。下面的公式用于衡量預測算法對整個訓練集的預測精度。其實就是對每個樣本的“損失”進行累加,然后求平均值。這種針對于整個訓練集的損失函數我們稱它為成本函數 (cost function) 。它的計算結果越大,說明成本越大,即預測越不準確。
損失函數從嚴格定義上來講是(通常嚴格定義都比較難懂,
不懂不要緊,懂了上面的內容就可以了) :將隨機事件或其有關隨機變量的取值映射為非負實數以表示該隨機事件的“風險”或“損失”的函數。在應用中,損失函數通常作為學習準則與優化問題相聯系,即通過最小化損失函數求解和評估模型。
損失函數是機器學習里最基礎也是最為關鍵的一個要素,通過對損失函數的定義、優化,就可以衍生到我們現在常用的機器學習等算法中。
損失函數的作用就是衡量模型模型預測的好壞。再簡單一點說就是:損失函數就是用來表現預測與實際數據的差距程度。換一種說法就是衡量兩個分布之間的距離:其中一個分布應當是原始分布,或者正確的分布(ground truth),而另一個分布則是目前的分布,或者模型擬合的分布(prediction)。
損失函數是可以很好的反映模型與實際數據差距的工具,理解損失函數能夠更好的對后續優化工具(梯度下降等) 進行分析與理解。很多時候遇到復雜的問題時,其實最難的一關是如何寫出合適的損失函數。
下一篇: harmonyOS之相機開發