精华内容
下载资源
问答
  • 18 1.8 噪声特性分析 19 1.8.1 时域波 形 20 1.8.2 均值分析 20 1.8.3 方差分析 21 1.8.4 自相关函数分析 21 1.8.5 功率谱密度分析 22 1.8.6 总结 22 第二章 极大似然法 23 第三章 方法比较 25 3.1 问题重述 25 3.2 ...
  • 朴素贝叶斯分类器训练函数 基本原理 p(ci|w)=p(w|ci)p(ci)p(w)p(ci|w)=p(w|ci)p(ci)p(w)p(c_i|w) = \frac{p(w|c_i)p(c_i)}{p(w)} w表示向量由多个值组成w表示向量由多个值组成w表示向量 由多个值组成 即...

    朴素贝叶斯分类器训练函数 基本原理

    p(ci|w)=p(w|ci)p(ci)p(w)

    w

    即核心问题:量化为在向量w发生时 属于ci的概率比较问题

    条件概率中 分母是一致的 因此不需要考虑吧

    分母表示在属于类别ci时发生,向量w发生的概率

    这里假设所有词都互相独立,该假设也称作条件独立性假设(例如 A 和 B 两个人抛骰子,概率是互不影响的,也就是相互独立的,A 抛 2点的同时 B 抛 3 点的概率就是 1/6 * 1/6),它意味着可以使用 p(w0 | ci)p(w1 | ci)p(w2 | ci)…p(wn | ci) 来计算上述概率,这样就极大地简化了计算的过程。

    问题量化:ci,w

    即:i,w

    引入到向量 i,

    Project:社区留言板侮辱性言论屏蔽
    Project Readme:

        构建一个快速过滤器来屏蔽在线社区留言板上的侮辱性言论.
        如果某条留言使用了负面或者侮辱性的语言,那么就将该留言标识为内容不当。
        对此问题建立两个类别: 侮辱类和非侮辱类,使用 1 和 0 分别表示
    
    def loadDataSet():
        """
        训练数据集
        :return: 单词列表postingList, 所属类别classVec
        """
        logging.info("read dataSet")
        postingList = [['my', 'dog', 'has', 'flea', 'problems', 'help', 'please'], #[0,0,1,1,1......]
                       ['maybe', 'not', 'take', 'him', 'to', 'dog', 'park', 'stupid'],
                       ['my', 'dalmation', 'is', 'so', 'cute', 'I', 'love', 'him'],
                       ['stop', 'posting', 'stupid', 'worthless', 'garbage'],
                       ['mr', 'licks', 'ate', 'my', 'steak', 'how', 'to', 'stop', 'him'],
                       ['quit', 'buying', 'worthless', 'dog', 'food', 'stupid']]
        classVec = [0, 1, 0, 1, 0, 1]  # 1 is abusive, 0 not
        return postingList, classVec

    step1 建立分词集合

    def createWordsSet(dataSet):
        logging.info("create words Set")
        # print(np.shape(dataSet)) (6,)
    
        wordsSet = set([])
    
        for words in dataSet:
            wordsSet = wordsSet | set(words)
        return list(wordsSet)

    step2 转化数据为向量

    def transferToVec(data, wordsSet):
    
        logging.info("transfer words to vec")
        # print(len(wordsSet)) output 32
        vec = [0] * len(wordsSet)
        print(vec, len(vec))
    
        for i in data:
            if i in wordsSet:
                print("词汇存在于集合中")
                vec[wordsSet.index(i)] += 1
            else:
                print("词汇不存在与集合中:%s"% i)
    
        # print(vec)
        return vec

    step3 先验概率及其条件概率计算

    def tranNBMaxLike(vecDataSet, classLable):
        """
            param vecDataSet: 输入空间的向量表示形式
            param classLable: 输出空间的类标记集合
    
            return p1Abusive: 先验概率
            return p0Abusive: 先验概率
            return p1Con: 条件概率 1类别 每个单词出现次数的占比
            return p0Con: 条件概率 0类别 每个单词出现次数的占比
        """
        logging.info("Maximum likelihood estimate p1Con p0Con")
        classLen = len(classLable)
        vecLen = len(vecDataSet[0])
    
        print(classLen, vecLen)
        # 先验概率
        p1Abusive = sum(classLable) / float(classLen)
        print('侮辱言论概率', p1Abusive)
        p0Abusive = 1 - p1Abusive
        print('非侮辱言论概率', p0Abusive)
    
        # 针对nxj维度的数据集 遵循条件独立性假设
        # 构造记录单词出现次数的列表
        p1Vec = np.zeros(vecLen)
        p0Vec = np.zeros(vecLen)
    
        # 条件概率下 每个类别出现单词的频数
        p0Nums = 0
        p1Nums = 0
    
        # 条件概率
        for i in range(classLen):
            # 在侮辱言论发生的条件下
            if classLable[i] == 1:
                # 单词出现的频数 -- 以向量形式记录
                p1Vec += vecDataSet[i]
                # 该类别时 出现的单词总频数
                p1Nums += sum(vecDataSet[i])
            # 在非侮辱言论发生的条件下
            if classLable[i] == 0:
                p0Vec += vecDataSet[i]
                p0Nums += sum(vecDataSet[i])
    
        # print(p1Vec)
        # print(p0Vec)
        # print(sum(p1Vec), p1Nums)
        # print(sum(p0Vec), p0Nums)
    
        # 计算条件概率
        # 类别1,即侮辱性文档的[P(F1|C1),P(F2|C1),P(F3|C1),P(F4|C1),P(F5|C1)....]列表
        # 即 在1类别下,每个
        # 单词出现次数的占比
        p1Con = p1Vec / p1Nums
        # print('p1Con', p1Con)
        # 类别0,即正常文档的[P(F1|C0),P(F2|C0),P(F3|C0),P(F4|C0),P(F5|C0)....]列表
        # 即 在1类别下,每个单词出现次数的占比
        p0Con = p0Vec / p0Nums
        # print('p0Con', p1Con)
    
        # print(p1)
        # print(p0)
    
        return p1Con, p0Con, p1Abusive, p0Abusive

    step4 朴素贝叶斯分类

    def classifyNB(testVec, p1Con, p0Con, p1Abusive, p0Abusive):
        """
            param: testVec 待测数据集的向量表示形式
            param p1Con: 类别1,即侮辱性文档的[P(F1|C1),P(F2|C1),P(F3|C1),P(F4|C1),P(F5|C1)....]列表
            param p0Con: 类别1,即侮辱性文档的[P(F1|C1),P(F2|C1),P(F3|C1),P(F4|C1),P(F5|C1)....]列表
            param p1Abusive: 即 在1类别下,每个单词出现次数的占比
            param p0Abusive: 即 在0类别下,每个单词出现次数的占比
    
            return: 0 or 1 类别
    
        """
        """
            计算方法:解决下溢出的问题 将乘积问题转化为相加
                    对乘积去自然对数 ln(a * b) = ln(a) + ln(b)
                    求对数可以避免下溢出或者浮点数舍入导致的错误。同时,采用自然对数进行处理不会有任何损失
        """
        logging.info("Bayes classify")
        testVec = np.array(testVec)
        p1Con = np.array(p1Con)
        p0Con = np.array(p0Con)
    
        """
            注意:numpy array进行向量运算时 若存在无效值将会使得 运算结果为nan
                需要设置 np.seterr(divide='ignore', invalid='ignore')
                即使设置之后 计算np.sum 还是保存 弃用此方法
        """
        pp = np.log(p1Con)
        print('pp', pp)
        print(sum(testVec * pp))
        print(sum(testVec * p1Con))
        p1 = sum(testVec * p1Con) + p1Abusive
        p0 = sum(testVec * p0Con) + p0Abusive
    
        print('p1', p1)
        print('p0', p0)
    
        if p1 > p0:
            return 1
        return 0

    算法检测

    def main():
        dataSet, classLable = loadDataSet()
        # print(dataSet)
        # print(classLable)
        wordsSet = createWordsSet(
            dataSet)
        vecDataSet = []
        for i in dataSet:
            vecDataSet.append(transferToVec(i, wordsSet))
        print(vecDataSet)
        p1Con, p0Con, p1Abusive, p0Abusive = tranNBMaxLike(vecDataSet, classLable)
        test = ['love', 'my', 'dalmation'] # 0
        # test = ['stupid', 'garbage']  # 1
        testVec = transferToVec(test, wordsSet)
        print(testVec)
    
        result = classifyNB(testVec, p1Con, p0Con, p1Abusive, p0Abusive)
        print(result)
    
    
    if __name__ == '__main__':
        main()

    参考文献
    机器学习实战
    ApacheCN-github

    展开全文
  • (二) 极大似然估计 本质:这是在总体类型已知条件下使用一种参数估计方法 引入问题:同学和猎人外出打猎,突然一只野兔出现,砰一声,野兔被枪击倒,你猜是谁将野兔打倒呢? 答:猎人击倒野兔可能性大...

    (二) 极大似然估计法

    • 本质:这是在总体类型已知条件下使用的一种参数估计方法

    • 引入问题:同学和猎人外出打猎,突然一只野兔出现,砰的一声,野兔被枪击倒,你猜是谁将野兔打倒的呢?

      答:猎人击倒野兔的可能性大,因此应该是猎人打倒的

    • 基本思想:选择一个参数使得实验结果具有最大概率。

    • 原理:设X1,X2,...,XnX_1,X_2,...,X_n是取自总体X的一个样本,样本的联合密度(连续型)或联合概率函数(离散型)为f(X1,X2,...,Xn;θ)f(X_1,X_2,...,X_n;\theta)

      当给定样本X1,X2,...,XnX_1,X_2,...,X_n时,定义似然函数为:
      L(θ)=f(X1,X2,...,Xn;θ) L(\theta)=f(X_1,X_2,...,X_n;\theta)
      L(θ)L(\theta)看作参数θ\theta的函数,它可作为θ\theta将以多大可能产生样本值X1,X2,...,XnX_1,X_2,...,X_n的一种度量。

      极大似然估计法就是用使L(θ)L(\theta)达到最大值的θ^\hat \theta去估计θ\theta.
      L(θ^)=maxθL(θ) L(\hat \theta)=max_{\theta}L(\theta)
      θ^\hat \thetaθ\theta的极大似然估计(Maximum Likelihood Estimation)

    • 极大似然估计(MLE)的一般步骤:

      (1)由总体分布导出样本的联合概率函数(或联合密度);

      (2)把样本联合概率函数(或联合密度)中自变量看成已知常数,而把参数θ\theta看作自变量,得到似然函数L(θ)L(\theta)

      (3)求似然函数L(θ)L(\theta)的最大值点(常常转化为求lnL(θ)lnL(\theta)的最大值点),即θ\theta的MLE;

      (4)在最大值点的表达式中,用样本值带入就得参数的极大似然估计值

      注意:

      (1)求似然函数L(θ)L(\theta)的最大值点,可以应用微积分中的技巧。由于ln(x)ln(x)xx的增函数,lnL(θ)lnL(\theta)L(θ)L(\theta)θ\theta的同一值处达到它的最大值,假定θ\theta是一实数,且lnL(θ)lnL(\theta)θ\theta的一个可微函数。通过求解所谓的”似然方程“:
      dlnL(θ)dθ=0 \frac{dlnL(\theta)}{d\theta}=0
      可以得到θ\theta的MLE。

      θ\theta是向量,上述方程必须用似然方程组代替。

      (2)用上述求导方法求参数的MLE有时行不通,这时要用极大似然原则(使似然函数L(θ)L(\theta)值最大)来求

    • e.g 以联合概率函数为例

      X1,X2,...,XnX_1,X_2,...,X_n是取自总体XX~B(1,p)B(1,p)的一个样本,求参数p的极大似然估计

      第一步:由总体分布导出样本概率函数;

      总体的分布:XX~B(1,p)P(X=x)=px(1p)1xx=0,1B(1,p) \quad \to \quad P(X=x)=p^x(1-p)^{1-x} \quad x=0,1

      于是,样本的联合分布为:

      P(X1=x1,X2=x2,...,Xn=xn)=P(X1=x1)P(X2=x2),...,P(Xn=xn)P(X_1=x_1,X_2=x_2,...,X_n=x_n)=P(X_1=x_1)P(X_2=x_2),...,P(X_n=x_n)

      =i=1npxi(1p)1xi=pi=1nxi(1p)ni=1nxi=\prod_{i=1}^np^{x_i}(1-p)^{1-x_i}=p^{\sum_{i=1}^nx_i}(1-p)^{n-\sum_{i=1}^nx_i}

      第二步:把样本联合概率函数(或联合密度)中自变量看成已知常数,而把参数θ\theta看作自变量,得到似然函数L(θ)L(\theta);

      似然函数为:
      L(p)=f(X1,X2,...,Xn;p)=i=1npxi(1p)1xi=pi=1nxi(1p)ni=1nxi L(p)=f(X_1,X_2,...,X_n;p)=\prod_{i=1}^np^{x_i}(1-p)^{1-x_i}=p^{\sum_{i=1}^nx_i}(1-p)^{n-\sum_{i=1}^nx_i}
      第三步:求似然函数L(θ)L(\theta)的最大值点(常常转化为lnL(θ)lnL(\theta)的最大值点),即θ\theta的MLE;

      对数似然函数为:
      lnL(p)=i=1nxiln(p)+(ni=1nxi)ln(1p) lnL(p)=\sum^n_{i=1}x_iln(p)+(n-\sum_{i=1}^nx_i)ln(1-p)
      对p求导并令其为0,得
      dlnL(p)dp=1pi=1nxi11p(ni=1nxi)=0p=1ni=1nxi=x \frac{dlnL(p)}{dp}=\frac{1}{p}\sum_{i=1}^nx_i-\frac{1}{1-p}(n-\sum_{i=1}^nx_i)=0 \\ \therefore p=\frac{1}{n}\sum_{i=1}^nx_i=\overline x
      第四步:在最大值点的表达式中,用样本值代入就得参数的极大似然估计值;

      p^=1ni=1nxi=x\hat p=\frac{1}{n}\sum_{i=1}^nx_i=\overline x,即为p的MLE。

      于是,p的极大似然估计量为p^=1ni=1nXi=X\hat p=\frac{1}{n}\sum_{i=1}^nX_i=\overline X

      这一估计量与矩估计量是相同的。

    • e.g 以联合密度函数为例

      X1,X2,...,XnX_1,X_2,...,X_n是取自总体X的一个样本

      XX~f(x)={θxθ1,0<x<10,f(x)=\begin{cases} \theta x^{\theta -1} , \quad 0<x<1 \\ 0, \quad 其它 \end{cases}

      其中θ>0\theta >0,求θ\theta的极大似然估计。

      似然函数为
      L(θ)=i=1nθxiθ1=θn(i=1nxi)θ1(0<xi<1,1in) L(\theta)=\prod_{i=1}^n\theta x_i^{\theta -1}=\theta^n(\prod_{i=1}^nx_i)^{\theta-1} \quad \quad (0<x_i<1, 1\leq i\leq n)
      对数似然函数为
      lnL(θ)=nlnθ+(θ1)i=1nlnxi lnL(\theta)=nln\theta+(\theta-1)\sum^n_{i=1}lnx_i
      求导并令其为0
      dlnL(θ)dθ=nθ+i=1nlnxi=0 \frac{dlnL(\theta)}{d\theta}=\frac{n}{\theta}+\sum_{i=1}^nlnx_i=0
      解得
      θ^=ni=1nlnxi \hat \theta=-\frac{n}{\sum_{i=1}^nlnx_i}
      即为θ\theta的MLE

    • e.g 以极大似然原则为例

      X1X2,...,XnX_1,X_2,...,X_n取自总体X的一个样本

      XX~f(x)={1θe(xμ)/θ,xμ0,f(x)=\begin{cases} \frac{1}{\theta}e^{-(x-\mu)/\theta}, \quad x\geq \mu \\ 0,\quad 其它 \end{cases}

      θ,μ\theta,\mu为未知参数,其中θ>0\theta>0,求θ,μ\theta,\mu的极大似然估计

      解:似然函数为
      L(θ,μ)={i=1n1θe(xiμ)/θxiμi=1,2,...,n0,={1θne1θi=1n(xiμ),min xiμ0, L(\theta,\mu)=\begin{cases}\prod_{i=1}^n\frac{1}{\theta}e^{-(x_i-\mu)/\theta} & x_i\geq \mu,i=1,2,...,n \\0, & 其它\end{cases}\\=\begin{cases}\frac{1}{\theta^n}e^{-\frac{1}{\theta}\sum_{i=1}^n(x_i-\mu)}, & min\space x_i\geq \mu \\0, & 其它\end{cases}

      对数似然函数为:
      lnL(θ,μ)=nlnθ1θi=1n(xiμ) lnL(\theta,\mu)=-nln\theta-\frac{1}{\theta}\sum_{i=1}^n(x_i-\mu)
      θ,μ\theta,\mu分别求偏导并令其为0,
      lnL(θ,μ)θ=nθ+1θ2i=1n(xiμ)=0(1) \frac{\partial lnL(\theta,\mu)}{\partial \theta}=-\frac{n}{\theta}+\frac{1}{\theta^2}\sum_{i=1}^n(x_i-\mu)=0 \tag{1}

      lnL(θ,μ)μ=nθ=0(2) \frac{\partial lnL(\theta,\mu)}{\partial \mu}=\frac{n}{\theta}=0 \tag{2}

      由(1)得:θ=1ni=1nxiμ\theta=\frac{1}{n}\sum_{i=1}^nx_i-\mu

      由(2)得:无解!nθ>0\frac{n}{\theta}>0恒成立

      用求导方法无法最终确定θμ\theta、\mu,用极大似然原则来求。

      min xiμ,L(θ,μ)>0min\space x_i\geq \mu,L(\theta,\mu)>0,且是μ\mu的增函数

      故要使L(θ,μ)L(\theta,\mu)达到最大,则μ=min xi\mu=min\space x_i,即μ\mu的MLE

      根据定义域,有μ=min1inxi\mu^*=min_{1\leq i\leq n}x_i,即θ,μ\theta^*,\mu^*θ,μ\theta,\mu的MLE。

      于是θ=1ni=1nxiμ\theta^*=\frac{1}{n}\sum_{i=1}^nx_i-\mu^*

    • 极大似然估计的一个性质:

      θ\theta的函数g=g(θ)g=g(\theta)θ\theta上的实值函数,且有唯一反函数。如果θ^\hat \thetaθ\theta的MLE,则g(θ^)g(\hat \theta)也是g(θ)g(\theta)的极大似然估计

      e.g 一罐中装有白球和黑球,有放回地抽取一个容量为n的样本,其中有k个白球,求罐中黑球与白球之比R的极大似然估计。

      解:设X1,X2,...,XnX_1,X_2,...,X_n为所取样本
      Xi={1,0, X_i= \begin{cases} 1, & 取到白球 \\ 0, & 取到黑球 \end{cases}
      其中i=1,2,...,ni=1,2,...,n,则X1,X2,...,XnX_1,X_2,...,X_n是取自B(1,p)B(1,p)的样本,p是每次抽取时取到白球的概率,p未知,求p的MLE。

      似然函数为
      L(p)=P(Y=k;p)=(nk)pk(1p)nk L(p)=P(Y=k;p)=\begin{pmatrix}n \\ k\end{pmatrix}p^k(1-p)^{n-k}
      对数似然函数为
      lnL(p)=ln(nk)+klnp+(nk)ln(1p) lnL(p)=ln\begin{pmatrix}n\\ k\end{pmatrix}+ klnp+(n-k)ln(1-p)
      对p求导并令其为0
      dlnf(p)dp=kpnk1p=0 \frac{d lnf(p)}{dp}=\frac{k}{p}-\frac{n-k}{1-p}=0
      解得
      p^=kn \hat p =\frac{k}{n}
      对一切的0<p<10<p<1,均有
      P(Y=k;p^)P(Y=k;p) P(Y=k;\hat p) \geq P(Y=k;p)
      由极大似然估计的性质可得,R=1ppR=\frac{1-p}{p}的MLE是
      R^=1p^p^=nk1 \hat R=\frac{1-\hat p}{\hat p}= \frac{n}{k}-1

    展开全文
  • 最大似然估计log likelihood

    万次阅读 2016-12-14 21:17:20
    log likelihood——对数似然函数值 在参数估计中有一类方法叫做“最大似然估计”,因为涉及到估计函数往往是是指数型族,取对数后不影响它单调性但会让计算过程变得简单,所以就采用了似然函数对数,...极大似然原理

    log likelihood——对数似然函数值

    在参数估计中有一类方法叫做“最大似然估计”,因为涉及到的估计函数往往是是指数型族,取对数后不影响它的单调性但会让计算过程变得简单,所以就采用了似然函数的对数,称“对数似然函数”.根据涉及的模型不同,对数函数会不尽相同,但是原理是一样的,都是从因变量的密度函数的到来,并涉及到对随机干扰项分布的假设.

    最大似然估计法的基本思想

    极大似然原理的直观想法是:一个随机试验如有若干个可能的结果A,B,C,…。若在一次试验中,结果A出现,则一般认为试验条件对A出现有利,也即A出现的概率很大。

    最大似然估计法的基本思想
      最大似然估计法的思想很简单:在已经得到试验结果的情况下,我们应该寻找使这个结果出现的可能性最大的那个  作为真  的估计。

    为简单起见,以下记  ,求θ的极大似然估计就归结为求  的最大值点.由于对数函数是单调增函数,所以
                        (7.2.1)

     与  有相同的最大值点。

    而在许多情况下,求  的最大值点比较简单,于是,我们就将求  的最大值点改为求  的最大值点。

      关于  求导数,并命其等于零,得到方程组 

                     (7.2.2)  称为似然方程组。

    解这个方程组,又能验证它是一个极大值点,则它必是  ,也就是  的最大值点,即为所求的最大似然估计。

    科学网—最大似然估计法 - 简建波的博文 


    密度函数

    是一个描述这个随机变量的输出值,在某个确定的取值点附近的可能性的函数。probability density function,简称PDF。

    设X是随机变量,如果存在一个非负函数f(x), 使得对任意实数a,b(a<b)有 P(a<X≤b) = ∫f(x)dx, (积分下限是a,上限是b) f(x)叫X的概率密度函数 
    这里指的是一维连续随机变量,其他类似


    正态分布参数含义

    N(a,b^2)

    a是均值,b^2是方差:a变大,分布曲线向右移,反之成立
        b^2变大,分布曲线变平缓
                                        b^2变小,分布曲线变陡峭

    非监督参数估计

    已知总体概率密度函数形式但未知样本所属的类别,要求推断出概率密度函数的某些参数,这种推断方法称之为非监督情况下的参数估计。 这里提到的监督参数估计和非监督参数估计中的监督和非监督是指样本所属类别是已知还是未知。但无论哪种情况下的参数估计都是统计学中的经典问题,解决的方法很多。

    最常用的有两种:

    一种是最大似然估计方法。最大似然估计把参数看做是确定(非随机)而未知的,最好的估计值是在获得实际观察样本的概率为最大的条件下得到的。

    另一种是贝叶斯估计方法。贝叶斯估计则是把参数当做具有某种分布的随机变量,样本的观察结果使先验分布转换为后验分布,再根据后验分布修正原先对参数的估计。

    虽然两者在结果上通常是近似的,但从概念上来说它们的处理方法是完全不同的。

    先验分布和后验分布

    先验概率可理解为统计概率,后验概率可理解为条件概率。

    先验分布:根据一般的经验认为随机变量应该满足的分布
    后验分布:通过当前训练数据修正的随机变量的分布,比先验分布更符合当前数据
    似然估计:已知训练数据,给定了模型,通过让似然性极大化估计模型参数的一种方法
    后验分布往往是基于先验分布和极大似然估计计算出来的。







    展开全文
  • L-BFGS优化算法基本原理 L-BFGS优化算法    一般的机器学习问题往往归结于对一个对数极大似然函数L(Λ)L(\Lambda)L(Λ)的优化问题,这里的Λ=(λ1,...  接下来的讨论假设你已经了解牛顿法的基本原理,牛顿法之...

    L-BFGS优化算法基本原理

    L-BFGS优化算法

       一般的机器学习问题往往归结于对一个对数极大似然函数L(Λ)L(\Lambda)的优化问题,这里的Λ=(λ1,,λn)T\Lambda = (\lambda_{1}, \dots, \lambda_{n} )^{T}为概率模型中的需要被估计的参数。
      接下来的讨论假设你已经了解牛顿法的基本原理,牛顿法之所以获得了更快的速度,是因为它利用了目标函数的二阶泰勒展开式中的Hessian矩阵。其迭代过程中的更新算法为
    xn+1=xnαHn1gn x_{n+1}=x_{n}-\alpha \bold{H}_{n}^{-1}\bold{g}_{n}
    这里Hn1\bold{H}_{n}^{-1}为Hessian矩阵,gn\bold{g}_{n}为梯度向量,α\alpha为步长。

    牛顿法至少存在两个问题,

    1. 对于存在梯度的函数来说未必存在Hessian矩阵,或者Hessian矩阵的计算过于复杂。
    2. 在机器学习问题中,需要优化的向量Λ\Lambda维度往往达到50000以上,如此存储Hessian矩阵至少需要N(N+1)/2N(N+1)/2=12亿,且对Hessian求逆矩阵的工作量过于庞大。

      为了解决问题一,数学家们提出了拟牛顿法,基本思路是利用优化过程中的变量自身和它的梯度信息估计Hessian矩阵。首先来看在估计过程中Hessian矩阵必须满足的两个条件。

    正割条件(Secant Condition)

      给定凸的目标函数f(x)f(x),其在xnx_{n}处二阶泰勒近似展开式为
    f(xn+Δx)f(xn)+ΔxTf(xn)+12ΔxT2f(xn)Δx f(x_{n}+\Delta x) \approx f(x_{n})+\Delta x^T\nabla f(x_{n})+\frac{1}{2}\Delta x^T \nabla ^{2}f(x_{n})\Delta x
    这里的xnx_{n}表示优化算法第n次迭代得到的解,它满足limnxn=x\bold{lim}_{n\rightarrow \infty}x_{n}=x^*xx^*为全局最优解。Δx\Delta x给出了优化方向,xn+1=xn+Δxx_{n+1}=x_{n}+\Delta x。为了方便书写,我们引入以下符号
    gn=f(xn)Hn=2f(xn)hn+1(xn+1)=f(xn+1) \bold{g}_{n}=\nabla f(x_{n}),\bold{H}_{n}=\nabla ^2f(x_{n}),h_{n+1}(x_{n+1})=f(x_{n+1})
    Secant Condition约束使得上述泰勒展开式对于xnx_{n}的梯度与f(x)f(x)对于xnx_{n}的梯度相等,于是得到如下条件,
    hn+1(xn+1)=gn+1hn(xn)=gn \nabla h_{n+1}(x_{n+1})=\bold{g}_{n+1} \\ \nabla h_{n}(x_{n})=\bold{g}_{n}
    上面两式做差,根据微分中值定理,得到下面的secant condition
    Hn+1(xn+1xn)=gn+1gn \bold{H}_{n+1}(x_{n+1}-x_{n})=\bold{g}_{n+1}-\bold{g}_{n}
    引入下面的符号,
    sn+1=xn+1xn,yn+1=gn+1gn s_{n+1}=x_{n+1}-x_{n},y_{n+1}=\bold{g}_{n+1}-\bold{g}_{n}
    于是得到了正割条件的最终形式,避免了对Hessian的求逆操作
    Hn+11yn+1=sn+1 \bold{H}^{-1}_{n+1}y_{n+1}=s_{n+1}

    对称条件

      由二阶偏导数的性质,Hessian矩阵显然要满足对称性,即HnT=Hn\bold{H}_{n}^{-T}=\bold{H}_{n}

    BFGS算法

      有了上面两个约束条件,我们减少了Hessian矩阵的一些自由度,secant condition提供了N个约束,而确定一个Hessian矩阵需要N(N+1)/2N(N+1)/2个约束条件,因而我们仍然需要一些条件,于是便有了BFGS算法,B,F,G,S分别为四个数学家名字的首字母,该算法将Hessian矩阵的估计问题转化为约束优化问题,他们假设在迭代过程中,Hessian尽可能的连续变换,即前后两次迭代的Frobenius范数变化不大,数学化的描述如下,
    minH1H1Hn12s.t.H1yn=snHT=H1 \min_{\bold{H}^{-1}}||\bold{H}^{-1}-\bold{H}_{n-1}||_{2} \\ \bold{s.t.}\quad \quad \quad \quad \quad \quad \quad \\ \bold{H}^{-1}y_{n}=s_{n}\\ \bold{H}^{-T}=\bold{H}^{-1}
    经过一系列繁琐的求解(以Lagrange乘子法为出发点),得到如下的解,这里不给出证明,有兴趣的读者可以查询相关论文,直接给出求解结果如下
    Hn1=(IρnynsnT)Hn11(IρnsnynT)+ρnsnsnT \bold{H}_{n}^{-1}=\left( I-\rho _{n} y_{n}s_{n}^T \right)\bold{H}_{n-1}^{-1}(I-\rho _{n}s_{n}y_{n}^T)+\rho_{n}s_{n}s_{n}^T
    其中,ρn=(snTyn)1\rho_{n}=(s_{n}^Ty_{n})^{-1}

      至此,我们解决了Hessian逆矩阵的估计问题,但我们仍然未解决Hessian庞大的内存占用问题,L-BFGS算法在BFGS的基础上解决了BFGS算法的内存占用问题。

    L-BFGS算法基本原理

    L-BFGS算法即limited BFGS算法(有限内存算法)。我们首先定义一个新的符号,
    Vn=IρnsnynT \bold{V}_{n}=I-\rho_{n}s_{n}y_{n}^T
    则Hessian的更新表达式可以简化为
    Hn1=VnTHn11Vn+ρnsnsnT=VnT(Vn1THn21Vn1+ρn1sn1sn1T)Vn+ρnsnsnT=VnTVnm+1TH0Vnm+1Vn+ρnm+1VnTVnm+2Tsnm+2snm+2TVnm+2Vn++ρnsnssT \begin{aligned} \bold{H}_{n}^{-1}&=\bold{V_{n}}^T\bold{H}_{n-1}^{-1}\bold{V}_{n}+\rho_{n}s_{n}s_{n}^T \\ &=\bold{V}_{n}^{T}(\bold{V}_{n-1}^T\bold{H}_{n-2}^{-1}\bold{V}_{n-1}+\rho_{n-1}s_{n-1}s_{n-1}^T)\bold{V}_{n}+\rho_{n}s_{n}s_{n}^T \\ &= \dots \\ &\approx \bold{V}_{n}^T\dots \bold{V}_{n-m+1}^T\bold{H}_{0}\bold{V}_{n-m+1}\dots\bold{V}_{n} \\ &\quad + \rho_{n-m+1}\bold{V}_{n}^T\dots \bold{V}_{n-m+2}^Ts_{n-m+2}s_{n-m+2}^T\bold{V}_{n-m+2}\dots\bold{V}_{n} \\ &\quad + \dots +\rho_{n}s_{n}s_{s}^T \end{aligned}
    这里初始的Hessian矩阵H0\bold{H}_{0}一般用单位矩阵代替,因此,L-BFGS算法在迭代过程中只需要保存前m次的sns_{n}yny_{n}即可,空间复杂度为O(mN)O(mN),远小于BFGS算法的O(N2)O(N^2)

    [参考文档]
    [1]: https://www.hankcs.com/ml/l-bfgs.html
    [2]: https://www.cnblogs.com/zyfd/p/10120036.html

    展开全文
  • 基于极大似然估计法的基本原理,结合优化理论,建立了可靠性寿命分布参数的极大似然优化估计模型.采用克隆选择算法实现模型的求解,给出了克隆选择算法在模型求解中的关键步骤和约束处理方法.通过实例给出了应用克隆...
  • 文章目录前言线性回归之回归算法OLS一、假设/原理二、经典例子三、建立模型四、完整求解思路4.1 求解误差4.2 误差分布假定4.3 似然函数求权重参数4.3.1 似然函数4.3.2 似然估计本质4.3.3 极大似然估计4.3.4 求导...
  • 1.离散型随机变量的极大似然估计: (1) 似然函数 若X为离散型, 似然函数为 (2) 求似然函数L(θ)最大值点 θ, 则θ就是未知参数的极大似然估计值. 2.连续型随机变量的极大似然估计: (1) 似然函数 若 X 为连续型...
  • 全书共14章,主要为绪论、系统辨识常用输入信号、线性系统经典辨识方法、动态系统典范表达式、最小二乘法辨识、极大似然法辨识、时变参数辨识方法、多输入-多输出系统辨识、随机时序列模型建立、系统结构...
  • 例如:极大似然估计推出朴素贝叶斯先验概率估计公式? 总来说对新手十分友好,建议入门之选。 “朴素”一词,到底是何意思? 在贝叶斯公式基础上,朴素贝叶斯方法做了一个强假设,对于一个结果发生...
  • 1 朴素贝叶斯法的学习与分类1.1 基本原理2 参数估计2.1 极大似然估计2.2 算法2.3 贝叶斯估计 1 朴素贝叶斯法的学习与分类 Naive Bayes是基于贝叶斯定理和特征条件独立的假设的分类方法。对于给定的训练数据,首先...
  •  极大似然估计  点估计的评判准则 区间估计:  置信区间 符号说明: 1 参数估计问题 2 点估计 2.1 矩估计 矩估计法的基本思想是根据大数定律,利用样本矩对总体分布矩进行估计。 然后利用总体矩与...
  • 极大似然与损失函数 牛顿 实验步骤与过程 首先,读入数据并绘制原始数据散点图 根据图像,我们可以看出,左下大多为负样本,而右上多为正样本,划分应该大致为一个斜率为负直线。 定义预测方程: ...
  • 极大似然与损失函数 牛顿 实验步骤与过程 首先,读入数据并绘制原始数据散点图 根据图像,我们可以看出,左下大多为负样本,而右上多为正样本,划分应该大致为一个斜率为负直线。 定义预测方程: ...

空空如也

空空如也

1 2 3 4 5
收藏数 94
精华内容 37
关键字:

极大似然法的基本原理