《计算智能》笔记

最优化算法

广度优先搜索

总是在某一深度上先搜索所有节点,之后搜索下一个深度的节点,能保证一定可以得到最优解,但需要生成大量节点,并且有可能导致组合爆炸,搜索效率低。

《高级人工智能》笔记

绪论

图灵测试

定义:

图灵测试指测试者与被测试者(一个人和一台机器)隔开的情况下,通过一些装置(如键盘)向被测试者随意提问。进行多次测试后,如果有超过30%的测试者不能确定出被测试者是人还是机器,那么这台机器就通过了测试,并被认为具有人类智能。

RNN,循环神经网络

问题分析

传统神经网络

  • 在不同的示例中,输入和输出可能具有不同的维度。
  • 无法在不同的文本位置共享所学到的特征信息。

ResNet

问题

先前的研究已经证明,拥有至少一个隐层的神经网络是一个通用的近似器,只要提高网络的深度,可以近似任何连续函数。因此,理想情况下,只要网络不过拟合,深度神经网络应该是越深越好。但是在实际情况中,在不断加神经网络的深度时,会出现一个 Degradation 的问题,即准确率会先上升然后达到饱和,再持续增加深度则会导致准确率下降。这并不是过拟合的问题,因为不光在测试集上误差增大,训练集本身误差也会增大。对此的解释为:当网络的层级很多时,随着前向传播的进行,输入数据的一些信息可能会被丢掉(激活函数、随机失活等),从而导致模型最后的表现能力很一般。

Network in Network

论文:Lin M, Chen Q, Yan S. Network In Network[J]. Computer Science, 2013.

1×1卷积

作用:1×1卷积核可以起到一个跨通道聚合的作用所以进一步可以起到降维(或者升维)的作用,起到减少参数的目的。 比如当前层为 x*x*m即图像大小为x*x,特征层数为m,然后如果将其通过1×1的卷积核,特征层数为n,那么只要n<m这样就能起到降维的目的,减少之后步骤的运算量(当然这里不太严谨,需要考虑1×1卷积核本身的参数个数为m×n个)。换句话说,如果使用1x1的卷积核,这个操作实现的就是多个feature map的线性组合,可以实现feature map在通道个数上的变化。 而因为卷积操作本身就可以做到各个通道的重新聚合的作用,所以1×1的卷积核也能达到这个效果。

卷积神经网络

卷积计算方式

im2col操作

用矩阵乘法实现:卷积运算本质上就是在滤波器和输入数据的局部区域间做点积。卷积层的常用实现方式就是利用这一点,将卷积层的前向传播变成一个巨大的矩阵乘法:

神经网络:静态部分

白化

白化操作的输入是特征基准上的数据,然后对每个维度除以其特征值来对数值范围进行归一化。该变换的几何解释是:如果数据服从多变量的高斯分布,那么经过白化后,数据的分布将会是一个均值为零,且协方差相等的矩阵。该操作的代码如下:

1
2
3
# 对数据进行白化操作:
# 除以特征值
Xwhite = Xrot / np.sqrt(S + 1e-5)

神经网络:动态部分

训练技巧

损失函数可视化

损失函数一般都是定义在高维度的空间中,这样要将其可视化就很困难。然而办法还是有的,在1个维度或者2个维度的方向上对高维空间进行切片,例如,随机生成一个权重矩阵W,该矩阵就与高维空间中的一个点对应。然后沿着某个维度方向前进的同时记录损失函数值的变化。换句话说,就是生成一个随机的方向$W_1$并且沿着此方向计算损失值,计算方法是根据不同的$\alpha$值来计算$L(W+aW_1)$。这个过程将生成一个图表,其x轴是$\alpha$值,y轴是损失函数值。同样的方法还可以用在两个维度上,通过改变a,b来计算损失值$L(W+aW_1+bW_2)$,从而给出二维的图像。在图像中,a,b可以分别用x和y轴表示,而损失函数的值可以用颜色变化表示:

preview

神经网络:激活函数

激活函数

Sigmoid

sigmoid将输入实数值“挤压”到0到1范围内。更具体地说,很大的负数变成0,很大的正数变成1。它对于神经元的激活频率有良好的解释:从完全不激活到在求和后的最大频率处的完全饱和(saturated)的激活。然而现在sigmoid函数实际很少使用了,这是因为它有两个主要缺点:

多类SVM

梯度求导

SVM的损失函数在某个数据点上的计算:

L_i=\displaystyle\sum_{j\not =y_i}[max(0,w^T_jx_i-w^T_{y_i}x_i+\Delta)]

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×