菜鸟博主对神经网络的简单理解(一)

发布于 2022-07-28  85 次阅读


博主最近在看临床预测模型,里面涉及到一些神经网络的相关知识,这里记录一下博主的简单理解。

基本概念

  • X:一个nx维的输入张量,可以是nx=0的标量,nx=1的向量,nx=2的矩阵,或更高维的张量
  • Y:一个ny维的输出张量,可以是nx=0的标量,nx=1的向量,nx=2的矩阵,或更高维的张量
  • f:一个特定结构的神经网络,如简单的BP神经网络、复杂的深度神经网络DNN等,用于将X映射到Y
  • W:一个nw维的张量,用来代表f中的所有权重,nw与f、X、Y有关,具体多少不用管
  • L:损失函数,可以是交叉熵、残差平方等,用来计算f(X)与实际Y的差距

一个简单的例子:假设f是DNN,X是一个256*256图片的像素矩阵,Y是一个3维分类向量,那么f就可以用于将一张特定的256*256图片X0映射到一个特定的Y0(P(🐱), P(🐕), P(🐖)),那么我们输出(🐱,🐕,🐖)[which.max(Y0)],就可以对图片X0进行(🐱,🐕,🐖)的分类。

对训练的理解

假设我们有一个训练好的权重W,那么我们就可以得到任意X下对实际Y的良好估计f(X,W),有L(f(X,W),Y)相对较小。我们训练的目的,就是根据已有的数据集D{(X,Y)},通过适当的拟合来找到这样一个权重W,它可以实现前面假设中的效果。

那么如何进行适当的拟合呢?一个简单的思路是梯度下降法。根据定义,我们知道Lf(X)Y的函数,那么变换视角,L就是关于W的函数。假设学习率为η,初始权重为W0,对于D中的任意(X0,Y0),我们可以求ΔW0=-η∇L(W0|(X0,Y0),f)。根据梯度的特性,我们可以知道对于更新后的权重W1=W0+ΔW0,有L(W1|(X0,Y0),f)<L(W0|(X0,Y0),f)。在适当的参数下,通过不断循环上述过程,就能得到最终的W

那么∇L(W|f)如何求呢?作为医学生,我们不必了解具体的数学原理来编程,只要构建好我们想要的网络结构fPyTorch自动求导功能就可以自动帮我们计算出∇L(W|f)啦。


医学生