工作原因太久太久太久没有记录什么东西了。这段时间终于有些闲下来,赶紧开始追赶深度学习的内容。
我是学英语出生的,深知学习本身,就跟深度模型一样,大量的input
,大量的training
,才能快速得到正确的output
。
在开始深度学习历程的时候,我觉得有一个问题是非常非常重要,并且必须不断去领悟,不断去更新认知的,那就是最最常见不过的数学上的加减乘除。也正是接触到深度学习(人工智能)之后,我才发现了数学之美。
数学之美不在于任何复杂的公式,数学之美就在于简单的加减乘除结合,却道出了万物之联系,能寻找出错综复杂背后的本质。现在,数学借助算力,以人工智能为载体,开始推进人类进入一个新的发展层次。
我不是数学系出生,所以不会给出专业的证明,这是用最简单的语言,结合我自身理解的结果,拙见。
第一记,是关于 RELU activation function
模型中使用 RELU
的结果,就是如果计算结果小于或者等于0,该方程的输出是0
,其他情况,则等于输入本身。
也是从上面这篇文章中,我看到了 +
法的一些实际意义。
RELU
是一个及其简单的公式,f = jA + kB
。但是这个公式却赋予了深度模型处理非线性问题的能力,而我们生活中的绝大部分问题,都是非线性的。
什么叫非线性,简单理解可以是影响一件事情的因素不止一个,并且越复杂的问题,影响因素越多,还并且,各个因素还要加上不同的权重。
为什么这么一个乘一下,加一下的公式,可以有这样大的能力呢?
根据 kaggle 的文章,RELU
可以捕捉到模型中变量之间的微妙关系(文中是 interaction
)。该文中用糖尿病举例。要判断一个人是否有糖尿病,一定需要查看这个人的体重数据。但是不能光看体重数据,体重较重的人,如果身高很高,这个人应该没有问题。但是体重很重,身高很矮,那就要警觉糖尿病的危险了。
这个例子,说明了判断糖尿病,身高和体重两个变量是相互影响的(interact with each other)。f = jA + kB
,这里的 +
号,体现出的是 A
对于结果 f
的影响,是基于另一个变量 B
的。类推上面糖尿病的例子,可以把 f
看成这个人确诊的概率,A
是体重,B
是身高。如果这个人很高,那么就设置 B
为一个很大的负数,如 -200
,那么 A
(体重)可以对确诊结果有影响,但是影响就很小,体重必须达到一个很大的值,才能让确诊结果增加到 0
以上。
那么在确诊病情的例子中,只有大于 0
的概率才是有意义的,因此,RELU
将非 0
的数据保留,而将其他数据全部置为 0
。这在分类等需要给出概率判断的模型中是非常重要的。
所以,个人理解,
+
号,在深度模型中的意义,在于叠加各个参数的影响,也表示着各个参数之间,是存在相互影响的。
乘法呢?
个人理解,乘法就是权重,或者理解成影响一件事情的某个因素的重要性。比如说,车子要跑得快,影响因素包括一个好的驾驶员,好的轮胎,空气动力学设计,马力足够大等。这些因素当中,马力足够大可能是影响因素最大的一个,那么就应该给予马力一个大的权重,让马力影响最终结果的公式中能有更大的影响力。设驾驶员为
A
,轮胎为B
,空气动力为C
,马力为D
,这个公式可能是这样:f = 2 * A + 4 * B + 5 * C + 8 * D
。这样一来,马力只需要提升很小的空间,车子也就能跑得更快,现实生活中,也应该是如此。
减法呢?
减法用加法来实现,等同加法。
除法呢?
除法用乘法实现,等同乘法。
这里的理解,抛开了统计,概率这些议题,这些实在是太复杂,专注于深度学习这块,或者更小的 activation function
这一块去理解,就已经够我揣摩很久了。其实复杂公式的背后,微积分,导数,最终就是加减乘除,还需要去慢慢品味,加深理解。
很多 activation function
其实都是非常简单的数学,但是最基础的东西,往往是构成大厦的基石,而复杂是由简单构成的。