為什麼要設定損失函式

2021-10-18 11:11:54 字數 578 閱讀 2946

以數字識別任務為例,我們想獲得的是能提高識別精度的引數,特意再匯入乙個損失函式不是有些重複勞動嗎?也就是說,既然我們的目標是獲得使識別精度盡可能高的神經網路,那不是應該把識別精度作為指標嗎?

在神經網路的學習中,尋找最優引數(權重和偏置)時,要尋找使損失函式的值盡可能小的引數。為了找到使損失函式的值盡可能小的地方,需要計算引數的導數(確切地講是梯度),然後以這個導數為指引,逐步更新引數的值。

假設有乙個神經網路,現在我們來關注這個神經網路中的某乙個權重引數。此時,對該權重引數的損失函式求導,表示的是「如果稍微改變這個權重引數的值,損失函式的值會如何變化」。如果導數的值為負,通過使該權重引數向正方向改變,可以減小損失函式的值;反過來,如果導數的值為正,則通過使該權重引數向負方向改變,可以減小損失函式的值。不過,當導數的值為0時,無論權重引數向哪個方向變化,損失函式的值都不會改變,此時該權重引數的更新會停在此處。之所以不能用識別精度作為指標,是因為這樣一來絕大多數地方的導數都會變為0,導致引數無法更新。

總結:在進行神經網路的學習時,不能將識別精度作為指標。因為如果以識別精度為指標,則引數的導數在絕大多數地方都會變為0。

彙編呼叫c函式為什麼要設定棧

彙編呼叫c函式為什麼要設定棧 一.棧的整體作用 1 儲存現場 上下文 2 傳遞引數 彙編 呼叫c函式時,需傳遞引數 3 儲存臨時變數 包括函式的非靜態區域性變數以及編譯器自動生成的其他臨時變數。二.為什麼彙編 呼叫c函式需要設定棧 之前看了很多關於uboot的分析,其中就有說要為c語言的執行,準備好...

ain函式為什麼要static

假設沒有static關鍵字,那意味著需要用生成乙個例項後才可以呼叫這個 ain方法,而 ain方法是程式入口點,你沒有進入 ain方法,自然無法生成乙個例項,既然沒有例項,那就無法呼叫 ain函式,豈不矛盾?所以 ain函式被設定為static.main 函式在c 裡非常特殊,它是編譯器規定的所有可...

為什麼要設定環境變數

解決不是內部或外部命令問題 關於環境變數,你了解多少呢?接下來我們一起來了解一下什麼是環境變數,它的作用是什麼。環境變數 這四個字千萬不要顧名思義,因為你根本就理解不了它的意思,那就乾脆不要理解了,直接說它的作用吧。環境變數就是一些被指定的資料夾路徑,目的是為了更快速方便的找到想要的檔案和資料夾。在...