zoukankan      html  css  js  c++  java
  • 损失函数:最小二乘法与极大似然估计法

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

    最小二乘法

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

    [hat y =sigmodigg (sum_i (w_icdot x_i + b_i) igg) ]

    为了比较单次结果与标签(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 ]

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

    极大似然估计法

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

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

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

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

    ( heta =0.1)​​时:

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

    ( heta =0.7)​​​时:

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

    ( heta =0.8)​​​时:

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

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

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

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

    [egin{align} L &= P(x_1, x_2, dots, x_n|W,b)\ &=prod_{i=1}^nP(x_i|W,b)\ &=prod_{i=1}^nP(x_i| heta_i)\ &=prod_{i=1}^{n} heta_i ^{[x_i=1]}cdot(1- heta_i)^{[x_i=0]} end{align} ]

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

    [egin{align} L &=prod_{i=1}^n heta_i^{x_i}cdot (1- heta_i)^{1-x_i}\ log(L) &= sum_{i=1}^n x_icdot log( heta_i) +(1-x_i)cdot log(1- heta_i) end{align} ]

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

    [egin{align} max; log(L)&=max;sum_{i=1}^n x_icdot log( heta_i) +(1-x_i)cdot log(1- heta_i)\ &=min;-sum_{i=1}^n x_icdot log( heta_i) +(1-x_i)cdot log(1- heta_i)\ end{align} ]

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

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

    有没有联想到什么?

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

    [egin{align} L &=prod_{i=1}^nP(x_i| heta_i)\ &=prod_{i=1}^nprod_{j=1}^m heta_{ij}^{x_{ij}}\ log(L)&=sum_{i=1}^nsum_{j=1}^mx_{ij}cdot log( heta_{ij})\ end{align} ]

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

  • 相关阅读:
    Mac OS terminal 查看内存使用情况的命令
    【教程】5分钟在以太坊上发行自己的代币
    Mac下eclipse的快捷键
    Mac上编辑文本的一些实用快捷键:跳转、选中等操作
    Mysql数据库用source命令导入SQL文件,利用navicat修改MySQL用户root密码,忘记mysql密码如何修改
    比特币1个确认和6个确认的区别在哪里?什么是双花问题?
    以 1、3、bc1 开头的比特币地址都有啥区别?转账手续费那种便宜,隔离见证地址为什么手续费便宜?
    以太坊 2.0 中的 DeFi:城市、郊区、农村
    Mac版navicat生成ER图把表结构导出pdf
    下载文件(API接口,Angularjs前端)
  • 原文地址:https://www.cnblogs.com/--Simon/p/15091695.html
Copyright © 2011-2022 走看看