• 损失函数:最小二乘法与极大似然估计法


    损失函数:最小二乘法与极大似然估计法

    最小二乘法

    对于判断输入是真是假的神经网络

    \[\hat y =sigmod\bigg (\sum_i (w_i\cdot x_i + b_i) \bigg) \]

    为了比较单次结果与标签\(y\)之间有多少的差距,可以直观的得到:

    \[min\ |y-\hat y| \]

    当同时有\(n\)次结果时:

    \[min\ \sum_{j=1}^n|y_i-\hat y_i| \]

    但是绝对值在其定义域内不完全可导,因此可改为如下形式,且不改变大小关系:

    \[min\ \frac{1}{2} \sum_{j=1}^n (y_i-\hat y_i)^2 \]

    吴恩达老师在课上说:用最小二乘法做梯度下降法会特别麻烦,所以不建议使用,具体为什么?

    极大似然估计法

    用来根据现实世界的事件发生频率,来反推出发生这些事件最可能的概率模型是什么样子。

    似然也就是,该某模型可能是真实模型的可能性

    假设对于投硬币来说,有三种硬币,其正反面重量不同,其投的正面的概率\(\theta\)分别为\(0.1,0.7,0.8\)。某一时刻某人挑选了一种硬币,并且投了10次硬币\(C_i\),出现\(7\)次正,\(3\)​​次反。如何确定此人所挑选是哪种硬币?

    可以分别计算选择不同种硬币时发生7次正,3次反的可能性有多大,即:

    \[\begin{align} L &= P(C_1,C_2,\dots, C_{10}|\theta)\\ &= \prod_{i=1}^{10}P(C_i|\theta)\\ &= \prod_{i=1}^{10}\theta ^{[C_i=1]}\cdot(1-\theta)^{[C_i=0]} \end{align} \]

    \(\theta =0.1\)​​时:

    \[L=(0.1)^7\cdot (0.9)^3 =7.29\times 10^{-8} \]

    \(\theta =0.7\)​​​时:

    \[L=(0.7)^7\cdot (0.3)^3 =2.22\times 10^{-3} \]

    \(\theta =0.8\)​​​时:

    \[L=(0.8)^7\cdot (0.2)^3 =1.68\times 10^{-3} \]

    可以得到此人所选的硬币最可能是\(\theta =0.7\)​的硬币。这就是基本的似然估计。

    而对于单个输出神经网络中,给出的一张张图片,便可以类比为抛出的硬币,硬币的正反就相当于人对于图片的标注结果(是或不是)。而神经网络要做的事,就是根据所给的图片,求得这些图片所表示的最可能的概率模型是什么样子。

    对于硬币来说每次输入的硬币是相同的,因此对于每一次投掷\(i\)​,其\(\theta_i=0.1\)​,而对于神经网络中的图片来说,他们都是互不相同的,其\(\theta_i = Network_{w,b}(x_i)\)

    \[\begin{align} L &= P(y_1, y_2, \dots, y_n|W,b)\\ &=\prod_{i=1}^nP(y_i|W,b)\\ &=\prod_{i=1}^nP(y_i|\theta_i)\\ &=\prod_{i=1}^{n}\theta_i ^{[y_i=1]}\cdot(1-\theta_i)^{[y_i=0]} \end{align} \]

    因为\(y_i\)要么是为真,要么为假,因此又等于:

    \[\begin{align} L &=\prod_{i=1}^n\theta_i^{y_i}\cdot (1-\theta_i)^{1-y_i}\\ log(L) &= \sum_{i=1}^n y_i\cdot log(\theta_i) +(1-y_i)\cdot log(1-\theta_i) \end{align} \]

    因此我们做的就是最大化\(log(L)\),即:

    \[\begin{align} max\; log(L)&=max\;\sum_{i=1}^n y_i\cdot log(\theta_i) +(1-y_i)\cdot log(1-\theta_i)\\ &=min\;-\sum_{i=1}^n y_i\cdot log(\theta_i) +(1-y_i)\cdot log(1-\theta_i)\\ \end{align} \]

    其实\(\theta_i\)又可理解为神经网络的输出即\(\hat y_i\),而\(x_i\)可理解为标签\(y_i\),因此又可以写成:

    \[min\;-\sum_{i=1}^n y_i\cdot log(\hat y_i) +(1-y_i)\cdot log(1-\hat y_i)\\ \]

    有没有联想到什么?

    对于多分类\(m\)神经网络模型,\(\theta_i=Network_{W,b}(x_i)\)就是一个向量,同时为了便于书写,将\(y_i\)处理成\(one-hot\)向量,则可由公式\(13\)​往下推导:

    \[\begin{align} L &=\prod_{i=1}^nP(y_i|\theta_i)\\ &=\prod_{i=1}^n\prod_{j=1}^m \theta_{ij}^{y_{ij}}\\ log(L)&=\sum_{i=1}^n\sum_{j=1}^my_{ij}\cdot log(\theta_{ij})\\ \end{align} \]

    推荐详细讲解视频:https://www.bilibili.com/video/BV1Y64y1Q7hi

  • 相关阅读:
    Hibernate笔记
    Struts2笔记(学struts2只需要这一篇文章)
    Linux开机启动和登录时各个文件的执行顺序
    Java虚拟机之垃圾回收算法思想总结
    码农雷林鹏:php概述
    码农雷林鹏:php教程
    雷林鹏分享:JDBC驱动类型
    码农雷林鹏教程分享:JDBC实例代码
    雷林鹏分享:JDBC环境设置
    雷林鹏分享:JDBC SQL语法
  • 原文地址:https://www.cnblogs.com/Hi-Simon/p/15091695.html
Copyright © 2020-2023  润新知