机器学习面试题-神经网络损失函数为何非凸

2020-05-18  本文已影响0人  bd7e4a65be2b

关注微信公众号“”机器学习算法面试“获取更多机器学习和深度学习方面的面试题

这个问题可以使用反证法来证明,假设我们有一个最简答的神经网络,也就是一个输入层、隐藏层、输出层。也就是说给定n个组样本(x_i,y_i) ,我们网络的经验损失函数可以写成如下的形式:
L_n(a,W)=\frac{1}{n}\sum_{i=1}^n l(y_i,a^T\sigma(W^T x_i) )
其中,a,W是我们要优化的权重,W代表输入层到隐层的权重, a代表隐层到输出层的权重。这里我们取L_2损失函数和ReLU作为我们的激活函数。即上式中(用max 代表对向量每一个元素取max),则有如下:
l({y_i},{a^T}\sigma ({W^T}{x_i})): = ({y_i},{a^T}\sigma ({W^T}{x_i}))
其中\sigma(.)可以取max、relu等激活函数。注意到虽然像取平方,ReLU激活函数、求内积这些“函数”单独来看都是凸的,但他们这么一复合之后就不一定是凸的了。一些常见的判断凸函数的方法请见上这里。

为了方便说明L_n这个函数是非凸的,需要一个经典引理:一个高维凸函数可以等价于无数个一维凸函数的叠加。一个(高维)函数是凸的,当且仅当把这个函数限制到任意直线上它在定义域上仍然是凸的。这是凸分析里很基本的一个定理,不熟悉的同学不妨尝试用定义来证明它。

反过来也就是说,只要我们找到一点(x,y) \in \mathbb{R}^n\times \mathbb{R} ,和一个“方向” v ,使得这个g函数非凸就可以了! 回顾一维凸函数的定义,这就是说在这个方向上找到两个点,他们平均的函数值比他们平均值上的函数值要低就行了。

为了说明L_n非凸,我们通过画图来验证,这里我们取真实的 a^*=[2;3], W^*=[-8;3] 。然后均匀随机地生成 100个 x_i(二维的[0,1]均匀随机向量),y_i 就用 y_i = (a^*)^T\sigma((W^*)^T x_i)+\epsilon_i生成, \epsilon_i 是[0,0.5]的均匀随机数(这样图像看起来会比较规整)。我们固定住 a_2^*,W_1^* ,画出采样出来的 L_n[a_1,W_2] 上的图像.

如上红线,我们可以很轻松的找到一条使g “非凸”的线,因此证明完毕: L_n 是非凸的。

上一篇 下一篇

猜你喜欢

热点阅读