【深度学习】深度神经网络原理(上)

本文详细介绍了神经网络中的关键组件,包括多层感知机(MLP)、卷积神经网络(CNN)和循环神经网络(RNN),特别是LSTM的工作原理。讨论了全连接层、卷积层的线性和非线性变换,以及反向传播算法的应用。还涵盖了工程实践中的问题,如卷积核数量计算和池化操作。
摘要由CSDN通过智能技术生成

神经网络(Neural Network, NN)的拓扑结构

分类如下:
有向非循环图:多层感知机MLP,卷积神经网络CNN
有向循环图:玻尔兹曼机BM,循环神经网络RNN
卷积网络用于处理网格化数据;循环神经网络用于处理序列化数据。

多层感知机(Multi-Layer Perceptron, MLP)

由多层全连接层相连而成,详见CNN不分。
https://www.huaweicloud.com/articles/500af3257273662fa204bcc1f72d054d.html

The theoretical analysis has shown that the MLP constructed with over one hidden layer can approximate any continuous computable function to an arbitrary precision.

循环神经网络(RNN, Recurrent NN)

输入n x d维数据,n为样本数,d是数据的维度。
隐藏层状态为n x h维。
输出为n x q维,一对一,一对多,多对多,多对一。

  1. Long Short Term Memory 长短期记忆网络
    LSTM是RNN的一种形式。
    时序输入,前一时间的信息对后一时间的信息有提示或限制;LSTM通过训练记忆时序之间的概率关系。
torch.nn.LSTM(input_size, hidden_size, num_layers)

卷积神经网络(CNN, Convolutional NN)

全连接层、卷积层、池化层、常见的Normalization层

全连接层:对矩阵整体实现线性变换和非线性变换。符号为ip
卷积层:对矩阵局部实现乘加和和非线性变换。符号为conv
池化层:对局部特征进行融合。符号为pool

全连接层

线性变换
y = A x + b y = Ax + b y=Ax+b
非线性变换,如sigmoid函数
y = 1 1 + e − x y = \frac{1}{1 + e^ {-x}} y=1+ex1

全连接层的反向传播

以两层全连接层为例,

def backward(self, loss):
        residual_z = loss * self.top_val * (1 - self.top_val)
        # loss对w的偏导数
        grad_w = np.dot(self.bottom_val, residual_z.T)
        grad_b = np.sum(residual_z)
        self.w -= self.lr * grad_w
        self.b -= self.lr * grad_b
        residual_x = np.dot(self.w, residual_z)
        return residual_x
# loss为最后一层y-t
layer1loss = fc2.backward(loss)
saliency = fc1.backward(layer1loss)

卷积层

  1. 线性变换:与图像的边缘检测处理类似,如求梯度。

  2. 非线性变换 Rectify Linear Unit,ReLU
    y = x , x > 0 y = 0 , 其他 y = x, x \gt 0 \\ y = 0, 其他 y=x,x>0y=0,其他

  3. 卷积变换的输入输出大小
    X o u t = 1 + X i n t + 2 ∗ p a d d i n g − S k e r n a l S s t r i d e X_{out}=1+\frac{X_{int}+2*padding-S_{kernal}}{S_{stride}} Xout=1+SstrideXint+2paddingSkernal

卷积向下取整,池化向上取整。

工程问题,输入3通道,卷积输出128通道,如何实现?或者从N通道,到1通道,如何实现?
输入3通道,输出128通道,需要3 x 128个卷积核,每次取出1层128个卷积核与一个通道的输入,得到128通道输出,共3次,将结果合并得输出;输入N通道,输出1通道,需要Nx1个卷积核,同样处理。

卷积层的反向传播

对三种数的偏导:输入X、权重W、偏置B

re_x = conv(padding(loss, kernel.size() - 1), rot180(kernel))
re_w = conv(x, loss)

epoch 所有样本数据正向和反向传递1轮为1epoch。

池化层

maxPooling,是指从矩阵块如3x3矩阵中取最大值。
avgPooling、L2Pooling,顾名思义。

GDN(Generalized Divisive Normalization)

y [ i ] = x [ i ] β [ i ] + ∑ j ( γ [ j , i ] ∗ x [ j ] 2 ) y[i] = \frac{x[i]}{\sqrt{\beta[i] + \sum_j(\gamma[j, i] * x[j]^2)}} y[i]=β[i]+j(γ[j,i]x[j]2) x[i]
参考:Density Modeling of Images Using a Generalized Normalization Transformation https://arxiv.org/abs/1511.06281

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值