LeCun Y., Chopra S., Hadsell R., Ranzato M. & Huang F. A Tutorial on Energy-Based Learning. To appear in “Predicting Structured Data, 2006, 1: 0.

从能量的角度看一些函数, 这里就记录一下这些损失.

主要内容

\(E(Y, X)\)反映了\(X, Y\)的关系, 认为能量越低, 而且的关系越紧密, 从下图中可以发现, \(X, Y\)的组合多种多样.

通常情况下, 我们需要训练一个映射, 其参数为\(W\), 一个好的参数可以使得

\[E(W, Y, X)
\]

很小. 不过我们通常会选取一些损失函数, 来间接最小化上面的能量函数

\[\mathcal{L}(E, S) = \frac{1}{P} \sum_{i=1}^P L(Y^i, E(W, \mathcal{Y}, X^i)) + R(W),
\]

其中\(R(W)\)是正则化项. 自然, 损失函数至少需要满足其最优点是最小化损失函数的, 当然应该还有一些其他的条件.

如果\(\mathcal{Y}\)是离散的, 我们可以令

\[\bar{Y}^i = \arg \min_{Y \in \mathcal{Y}, Y \not= Y^i} E(W, Y, X^i),
\]

相应的连续情况下

\[\bar{Y}^i = \arg \min_{Y \in \mathcal{Y}, \|Y-Y^i\| > \epsilon} E(W, Y, X^i),
\]

即\(\bar{Y}\)是我们最不爽的点. 很自然, 我们希望损失函数将我们希望的点\(Y^i\)的能量降低, 而拔高我们讨厌的\(\bar{Y}^i\)的能量.

损失函数

Energy Loss

\[L_{energy} (Y^i, E(W, \mathcal{Y}, X^i)) = E(W, Y^i, X^i).
\]

Generalized Perceptron Loss

\[L_{perceptron} (Y^i, E(W, \mathcal{Y}, X^i)) = E(W, Y^i, X^i) - \min_{Y \in \mathcal{Y}} E(W, Y, X^i).
\]

Generalized Margin Loss

Hinge Loss
\[L_{hinge} (W, Y^i, X^i) = \max(0, m+E(W, Y^i, X^i) - E(W, \bar{Y}^i, X^i)).
\]
Log Loss
\[L_{log} (W, Y^i,X^i) = \log (1+e^{E(W, Y^i, X^i)-E(W, \bar{Y}^i, X^i)}).
\]
LVQ2 Loss
\[L_{lvq2}(W, Y^i, X^i) = \min (1, \max(0, \frac{E(W, Y^i, X^i)- E(W, \bar{Y}^i, X^i)}{\delta E(W, \bar{Y}^i, X^i)})).
\]

虽然LVQ2 Loss和上面的非margin loss一样, 似乎是没margin的, 但是作者说最后二者有一个饱和的比例\(1+\delta\), 但是不是特别理解.

MCE Loss
\[L_{mce} (W, Y^i, X^i) = \sigma (E(W, Y^i, X^i)-E(W, \bar{Y}^i, X^i)),
\]

其中\(\sigma\)是sigmoid.

Square-Square Loss
\[L_{sq-sq} (W, Y^i, X^i) = E(X, Y^i, X^i)^2 + (\max(0, m-E(W, \bar{Y}^i, X^i)))^2.
\]
Square-Exponential
\[L_{sq-exp} (W, Y^i, X^i) = E(W, Y^i, X^i)^2 + \gamma e^{-E(W,\bar{Y}^i, X^i)}.
\]

Negative Log-Likelihood Loss

\[L_{nll}(W, Y^i, X^i) = E(W, Y^i, X^i) + \mathcal{F}_{\beta} (W, \mathcal{Y}, X^i),
\]

其中

\[\mathcal{F}_{\beta}(W, \mathcal{Y}, X^i) = \frac{1}{\beta} \log (\int_{y \in \mathcal{Y}} \exp (-\beta E(W, y, X^i))).
\]
Empirical Error Loss
\[L_{mee} (W, Y^i, X^i) = 1 - \frac{e^{-\beta E(W, Y^i, X^i)}}{\int_{y \in \mathcal{Y}}e^{-\beta E(W, y, X^i)}}.
\]

好的损失应该满足的一些条件

都是充分条件, 所以不满足也有可能是满足所需要的性质的.

条件1

对于样本\((X^i, Y^i)\), 如果预测满足

\[E(W, Y^i, X^i) < E(W, Y, X^i), \quad \forall Y \in \mathcal{Y} \: and \: Y \not = Y^i.
\]

则推断结果应当为\(Y^i\).

条件2

对于变量\(Y\)以及样本\((X^i, Y^i)\)和margin \(m\), 若

\[E(W, Y^i, X^i) < E(W, \bar{Y}, X^i) - m,
\]

则推断结果应当为\(Y^i\).

条件3

这个条件就用语言描述吧.

即, 要求\(HP_1\)与可行域\(R\)的交集中存在一解, 是的\((X^i, Y^i)\)在该点处的能量比\(HP_2\)与\(R\)交集的所有解的能量都要小, 其中

\[HP_1: E_C+m < E_I \\
HP_2: E_C + m > E_I.
\]

\(E_C=E(W, Y^i, X^i)\), \(E_I=E(W, \bar{Y}^i, X^i)\).

下图给出了满足上述三个条件的损失及其对应的\(m\).

A Tutorial on Energy-Based Learning的更多相关文章

  1. A Complete Tutorial on Tree Based Modeling from Scratch (in R & Python)

    A Complete Tutorial on Tree Based Modeling from Scratch (in R & Python) MACHINE LEARNING PYTHON  ...

  2. 强化学习之 免模型学习(model-free based learning)

    强化学习之 免模型学习(model-free based learning) ------ 蒙特卡罗强化学习 与 时序查分学习 ------ 部分节选自周志华老师的教材<机器学习> 由于现 ...

  3. Tutorial on GoogleNet based image classification --- focus on Inception module and save/load models

    Tutorial on GoogleNet based image classification  2018-06-26 15:50:29 本文旨在通过案例来学习 GoogleNet 及其 Incep ...

  4. Pros and Cons of Game Based Learning

    https://www.gamedesigning.org/learn/game-based-learning/ I remember days gone by at elementary schoo ...

  5. Octave Tutorial(《Machine Learning》)之第一课《数据表示和存储》

    Octave Tutorial 第一课 Computation&Operation 数据表示和存储 1.简单的四则运算,布尔运算,赋值运算(a && b,a || b,xor( ...

  6. Game Based Learning: Why Does it Work?

    Forty years of research[i] says yes, games are effective learning tools. People learn from games, an ...

  7. Octave Tutorial(《Machine Learning》)之第五课《控制语句和方程及向量化》

    第五课 控制语句和方程 For,while,if statements and functions (1)For loop v=zeros(10,1) %initial vectors for i=1 ...

  8. Octave Tutorial(《Machine Learning》)之第四课《绘图数据》

    第四课 Plotting Data 绘图数据 t = [0,0.01,0.98]; y1 = sin(2*pi*4*t); y2 = cos(2*pi*4*t); plot(t,y1);(绘制图1) ...

  9. Octave Tutorial(《Machine Learning》)之第三课《数据计算》

    第三课 Culculating Data 数据计算 矩阵计算 1.简单的四则运算 2.相乘除,乘方运算(元素位运算) ".*"为对应元素的相乘计算 "./"为对 ...

  10. Octave Tutorial(《Machine Learning》)之第二课《数据移动》

    第二课 Moving Data 数据移动 常用内置函数 (1)加载文件 load 文件名.dat(或load('文件名.dat')) 接着输入文件名便可查看文件里的数据 (2)显示当前工作空间的所有变 ...

随机推荐

  1. 试了下GoAsm

    在VC里我们: #include <windows.h> DWORD dwNumberOfBytesWritten; int main() { HANDLE hStdOut = GetSt ...

  2. JavaScript设计模式,单例模式!

    单例设计模式:保证一个类仅有一个实例,并且提供一个访问它的全局访问点.有些对象只需要一个,这时可用单例模式. 传统的单例模式 和new 创建对象的调用不一样 调用者要调用xxx.getInstance ...

  3. Ecshop 后台管理员密码忘记了吧~!~!~!

    方法1:把下面的代码保存为文件 mima.php <?php define('IN_ECS', true); require(dirname(__FILE__) . '/includes/ini ...

  4. 容器之分类与各种测试(四)——map

    map和set的区别在于,前者key和value是分开的,前者的key不会重复,value可以重复:后者的key即为value,后者的value不允许重复.还有,map在插入时可以使用 [ ]进行(看 ...

  5. 链栈(C++)

    链栈,字面意思,就是用链表来实现一个栈的数据结构. 那么,只需将单链表的头节点当作栈顶,尾节点当作栈底.入栈只需要头插,出栈只需头删即可.所以只需要吧单链表稍微阉割一下就可以得到链式栈了.代码如下 / ...

  6. 调试器gdb

    1.启动和退出gdb gdb调试的对象是可执行文件,而不是程序源代码.如果要使一个可执行文件可以被gdb调试,那么在使用编译器gcc编译程序时加入-g选项.-g选项告诉gcc在编译程序时加入调试信息, ...

  7. winxp 关闭445端口

    关闭445端口的方法方法很多,但是我比较推荐以下这种方法: 修改注册表,添加一个键值 Hive: HKEY_LOCAL_MACHINE Key: System\Controlset\Services\ ...

  8. 详解 java 异常

    Throwable 可以用来表示任何可以作为异常抛出的类(注意,是类不是接口),分为两种: Error(注意!error也是可以throw的,但是不建议) 和 Exception. 其中 Error ...

  9. Pytorch入门中 —— 搭建网络模型

    本节内容参照小土堆的pytorch入门视频教程,主要通过查询文档的方式讲解如何搭建卷积神经网络.学习时要学会查询文档,这样会比直接搜索良莠不齐的博客更快.更可靠.讲解的内容主要是pytorch核心包中 ...

  10. 【模型推理】量化实现分享二:详解 KL 对称量化算法实现

      欢迎关注我的公众号 [极智视界],回复001获取Google编程规范   O_o   >_<   o_O   O_o   ~_~   o_O   大家好,我是极智视界,本文剖析一下 K ...