softmax函數與交叉熵損失函數

在這里插入圖片描述

本文主要介紹了當前機器學習模型中廣泛應用的交叉熵損失函數與softmax激勵函數。

這個損失函數主要應用于多分類問題,用于衡量預測值與實際值之間的相似程度。

交叉熵損失函數定義如下: LCE(y^,y?)=?∑i=1Nclassesyi?log(yi^)L_{CE}(\hat{y}, y^*) = - \sum_{i=1}^{Nclasses} y_i^*log(\hat{y_i})LCE?(y^?,y?)=?i=1Nclasses?yi??log(yi?^?)

其中 y^\hat{y}y^? 為預測向量,y?y^*y?為真實標簽向量。在多分類問題機器學習中,y?y^*y? 一般使用獨熱編碼。例如,在一個三分類問題中, y?y^*y?向量的維度就是三維,對應屬于某一類則該位為1,其余位為0。第一類對應的真實標簽向量即為[1,0,0]T[1, 0, 0]^T[1,0,0]T,第二類對應的真實標簽向量為[0,1,0][0,1,0][0,1,0] 等等以此類推。

很顯然,對于這個損失函數而言,取到最小值的時候就是當求和部分取得最大值,即預測向量與標簽向量相似度最大時,其乘積也最大。以下圖為例,例如該類真實標簽為Class2,當向量y^\hat{y}y^?的第二項趨向于于1,此時損失函數取得最小值,我們也保證了預測值與真實值之間的誤差最小了。

在這里插入圖片描述
很顯然,這里我們有兩個問題,其一是為什么要使用預測值的log函數值與真實的標簽相乘而不直接使用兩者原始值相乘。其原因在于,由于我們的概率范圍總是在0-1之間,直接獲取乘積往往會使得不同的損失之間的差別不大,不利于我們進一步通過這個誤差來優化我們的模型。

第二個問題是,如何保證預測向量滿足概率分布。我們都知道標簽向量y?y^*y? 由于使用了獨熱編碼,因此他永遠滿足概率分布即∑p(x)=1\sum p(x) = 1p(x)=1,但是我們的預測向量 y^\hat{y}y^? 卻不一定。這里就要用到我們的softmax激勵函數了。簡單的來說,softmax函數就幫助我們將一個隨機數值的向量,轉化為了一個所有值在0-1之間,且和為1的向量,以滿足概率分布關系。softmax函數的定義如下: yt,k=e(yt,k)∑ke(yt,k)y_{t,k} = \frac{e^{(y_{t,k})}}{\sum_ke^{(y_{t,k})}}yt,k?=k?e(yt,k?)e(yt,k?)?
其中下標t對應第t個樣本,k對應輸出層的第k個神經元。softmax函數首先將所有輸出層神經元對應的值通過指數函數轉換為正值,再通過歸一化處理,除以他們的指數函數值之和,以保證所有項對應的值之和為1。

在這里插入圖片描述
通過softmax函數構建概率分布再通過交叉熵,我們就構建了交叉熵損失函數。

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

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

相關文章

vue配置git的子模塊

在vue的模塊需要調用許多公共組件,在公共組件之后會需要不斷的更新以及分組做,這時候可以利用git的方式更新組件所在位置 [submodule "src/component/common"] path src/component/common urlgit111.111.111.111:projectname/web-common-…

unity如何讓物體與特定物體之間不發生碰撞

unity中我們普遍使用的是碰撞器來實現各個物體的碰撞體積,例如Box collider, Sphere Collider。 在實現游戲的過程中,如果不想要物體與特定物體產生碰撞,或反之,只想讓碰撞發生在特定物體之間時,我們就需要配置layer …

jenkins的JAVA簡單順序配置git倉庫

后臺Java的發布配置 1、從源碼管理下載項目內容 2、構建觸發器 3 、構建下環境 4、構建后處理

SQLyog連接數據庫報錯plugin caching_sha2_password could not be loaded

打開cmd:mysql -uroot -p 進入mysql依次執行下面語句 ALTER USER rootlocalhost IDENTIFIED BY password PASSWORD EXPIRE NEVER; #修改加密規則 ALTER USER rootlocalhost IDENTIFIED WITH mysql_native_password BY password; #更新一下用戶的密碼 FLUSH PRIVI…

unity導入素材時材質丟失素材變成粉紅色的解決方法

有很多時候,當我們通過unity asset store或者blender等等外源導入素材時,會出現材質缺失的bug,如下圖所示 : 一個很可能的原因,是由于unity本身管線在每個版本的更新過程中,材質的渲染編碼發生了改變。由于這種原因引…

Jenkins 部署vue到服務器

鏈接github名稱 2、從源碼管理下載 3、更新最新前端模塊 4、進行構建和打包

unity用coroutine并發實現暫停執行程序

廢話不多說,下面就用一個簡單的顯示指引案件的例子來展示如何用coroutine來暫停程序的執行 using System.Collections; using System.Collections.Generic; using UnityEngine;public class TextTriggered : MonoBehaviour {public GameObject TextObject;// Start…

P2690 接蘋果

———————————————————————— 我用了記憶化,因為它比DP更好理解 ————————————————————————— 資料:百度百科( MIKU,I Love HER ) 來自洛谷:(背包的題解&am…

gitlab使用git sourcetree時候的命令

6. Git連接設置 MacOS 打開MacOS的 terminal.app 工具。 輸入 cat ~/.ssh/id_rsa.pub 確認是否有已經存在的證書。 如果提示存在證書,請跳至 第5步。 輸入 ssh-keygen -t rsa -C "your.mobile136.com" -b 4096,并回車,提示的輸入…

numpy數組提取一定規律的數據

numpy數組的索引也是符合start stop step規律的,因此可以通過索引提取出一系列索引有規律的元素,如下例子: import numpy as np i np.linspace(1,100,100, dtypeint)-1 print(i) i_train i[0:100:10] print(i_train)輸出結果如下 : 可以看到通過索引…

在layui中使用 jquery 觸發select 的 change事件無效

在layui中使用 jquery 觸發select 的 change事件無效 使用layui.use監聽select事件 <select lay-filter"demo" lay-verify"required"><script> layui.use([layer, jquery, form], function () { var layer layui.layer, $ layui.j…

Maven添加Oracle驅動及依賴

oracle驅動先去官網下載,下載下來后,需要安裝到maven本地倉庫,然后再pom中添加依賴. 1下載oracle驅動包 ojdbc6-11.2.0.3.jar 2命令行安裝到maven倉庫 mvn install:install-file -DgroupIdcom.oracle -DartifactIdojdbc6 -Dversion11.2.0.3.0 -Dpackagingjar -DfileE:\orac…

Unity C# namespace 命名空間的使用

命名空間在多個面對對象的語言中有應用&#xff0c;例如JAVA&#xff0c;C&#xff0c;C#。本文主要記錄了在C#中如何調用不同命名空間的public class。 首先對namespace做一個簡單的總結。如果說類是對屬性和方法的封裝&#xff0c;那么命名空間就是對各個類的進一步封裝。在…

CRM、用戶管理權限

CRM目錄結構 from django.shortcuts import HttpResponse,render,redirect from django.conf.urls import url from django.utils.safestring import mark_safe from django.urls import reverse from django.forms import ModelForm from stark.utils.my_page import Paginat…

Spring Boot集成Druid監控

package com.xxxxxxx.framework.datasource.druid;import com.alibaba.druid.support.http.WebStatFilter;import javax.servlet.annotation.WebFilter; import javax.servlet.annotation.WebInitParam;/*** druid過濾器.*/ WebFilter(filterName "druidWebStatFilter&qu…

hexo個人博客搭建

使用gitee托管平臺搭配hexo工具搭建個人博客 燁然的個人博客 第一部分 HEXO安裝(win10安裝過程) 1.安裝git 安裝后配置環境變量 C:\Program Files\Git\bin C:\Program Files\Git\libexec\git-core 2.安裝Node.js 快速下載鏈接 安裝后配置環境變量 環境變量寫入C:\Program Files…

GAN生成對抗網絡基本概念及基于mnist數據集的代碼實現

本文主要總結了GAN(Generative Adversarial Networks) 生成對抗網絡的基本原理并通過mnist數據集展示GAN網絡的應用。 GAN網絡是由兩個目標相對立的網絡構成的&#xff0c;在所有GAN框架中都至少包含了兩個部分&#xff0c;生成模型部分和判別模型部分。生成模型的目標是制造出…

dump查詢Java 狀態

代碼文件 dump.sh #!/usr/bin/env bash### use demo ### # 1)upload dump.sh # 2)dos2unix dump.sh;chmod x dump.sh # 3)usage: # 1. /data/sh/java/dump.sh /tmp/dump /usr/local/java/jdk1.8.0_05 23554 # 2. /data/sh/java/dump.sh /tmp/dump /usr/local/java/jdk1…

jdk、jre、jvm區別與聯系

JVM &#xff1a;英文名稱&#xff08;Java Virtual Machine&#xff09;&#xff0c;就是我們耳熟能詳的 Java 虛擬機。它只認識 xxx.class 這種類型的文件&#xff0c;它能夠將 class 文件中的字節碼指令進行識別并調用操作系統向上的 API 完成動作。所以說&#xff0c;jvm 是…

autoencoder自編碼器原理以及在mnist數據集上的實現

Autoencoder是常見的一種非監督學習的神經網絡。它實際由一組相對應的神經網絡組成&#xff08;可以是普通的全連接層&#xff0c;或者是卷積層&#xff0c;亦或者是LSTMRNN等等&#xff0c;取決于項目目的&#xff09;&#xff0c;其目的是將輸入數據降維成一個低維度的潛在編…