纯小白入门解读:神经网络

1.整体架构

1.1 层次结构

层次结构包括输入层,输出层,隐藏层等,上面图示是有两个隐藏层,每个隐藏层有四个神经元。输入层是1×3的矩阵,隐藏层1和隐藏层2是1×4的矩阵,输出层是1×1的矩阵,这样在输入层和隐藏层1之间有一个3*4的权重矩阵,隐藏层1和隐藏层2之间有一个4×4的矩阵,隐藏层2和输出层之间有一个4*1的权重矩阵。

1.2 神经元

在神经网络中,神经元是指模拟人类大脑中的神经元的基本单位。它是一个数学模型,用于模拟生物神经元的功能。在人工神经网络中,神经元接收来自其他神经元的输入,并根据这些输入计算出一个输出。

线性环节,就是将输入的数x 1 . . . x n x_1...x_nx 乘以他们对应的权数w 1 . . . w n w_1...w_nw再相加得到我们线性环节的输出a, 非线性环节, 就是将我们再线性环节输出的数a放到我们准备好的非线性函数y = y ( x )中, 得到这个神经元的最终输出值y。

为什么需要非线性函数呢? 

因为如果我们不加入非线性函数的话, 得到的只是输入线性的结合, 那么无论神经网络有多复杂, 我们能把他合并为一个线性计算, 而加入了非线性环节, 我们的神经元就能获得更多的可能.

神经元怎么训练呢?

神经元的训练就是调节权重 和b的值, 是神经元的计算结果越来越趋近于我们所期待的输出值,可以是我们的误差函数e对w和b求导, 然后往导数小的地方调整就可以了

增加或减少隐藏层中的神经元数量会对神经网络产生各种影响,包括:

  1. 模型复杂度: 增加隐藏层神经元的数量会增加神经网络的复杂度,可能使其能够更好地拟合训练数据,但也可能增加过拟合的风险。相反,减少隐藏层神经元的数量可能会降低模型的复杂度,有助于减少过拟合,但也可能降低模型的表达能力。
  2. 计算成本: 增加隐藏层神经元的数量会增加神经网络的计算成本,因为需要更多的参数进行训练和更多的计算进行推理。减少隐藏层神经元的数量可以减少计算成本,但可能会牺牲模型的性能。
  3. 训练时间: 增加隐藏层神经元的数量可能会增加训练时间,因为需要更多的参数进行训练,导致更多的计算量和更长的收敛时间。减少隐藏层神经元的数量可能会缩短训练时间,但也可能导致模型学习能力的下降。
  4. 泛化能力: 适当调整隐藏层神经元的数量可以影响神经网络的泛化能力。过多的隐藏层神经元可能导致过拟合,而过少的隐藏层神经元可能导致欠拟合。通过合适的调整,可以使模型在未见过的数据上表现良好。

1.3 全连接

全连接指的是神经网络中的一种连接方式,其中每个神经元都与上一层的所有神经元相连。在全连接的神经网络中,每个神经元都接收来自上一层所有神经元的输入,并将这些输入加权求和后通过激活函数进行处理,产生输出。
除了全连接(Fully Connected),在神经网络中还有其他类型的连接方式,主要包括以下几种:

  1. 卷积连接(Convolutional Connection): 在卷积神经网络(CNN)中使用,其中神经元只与输入数据的局部区域连接。这种连接方式利用了局部相关性和平移不变性,使得CNN在处理图像等具有空间结构的数据时表现出色。
  2. 循环连接(Recurrent Connection): 在循环神经网络(RNN)中使用,其中神经元与自身或者其他时间步的神经元连接,形成时间上的循环结构。这种连接方式使得RNN能够处理序列数据,并具有记忆能力。
  3. 局部连接(Locally Connected): 类似于卷积连接,但每个神经元只与输入数据的局部区域连接,而不是整个输入数据。局部连接可以降低模型的参数量和计算成本,并且对于某些数据结构可能更适用。
  4. 稀疏连接(Sparse Connection): 只有部分神经元之间存在连接,而不是所有神经元之间都连接。这种连接方式可以降低模型的复杂度和参数量,减少过拟合的风险,并提高计算效率。
  5. 注意力连接(Attention Connection): 在注意力机制中使用,其中神经元之间的连接权重是根据输入数据的重要性动态调整的。这种连接方式使得模型能够集中注意力在输入数据的相关部分,从而提高性能。

1.4 非线型

在神经网络中,非线性指的是神经元的激活函数不是线性的。如果神经网络中所有的激活函数都是线性的,那么整个网络只是一系列线性变换的组合,无论有多少层,最终都可以用一个线性函数表示。这时候,网络的表达能力受到限制,无法处理非线性的复杂关系。因此,引入非线性激活函数(如ReLU、Sigmoid、Tanh等)可以使得神经网络具备学习和表示复杂非线性关系的能力。

以下面两个举例,在乘以一个非线性函数就可以保证非线性了

2.一些常识

1 线性回归 

y与很多x相关,但是x的权重不确定,线型回归就是在做求x的权重的过程,神经网络可以视为一个多层的线性回归模型,但其关键之处在于神经网络的每一层之间都会添加非线性激活函数,这使得神经网络可以学习和表示更加复杂的非线性关系。

2 逻辑回归

逻辑回归和线型回归相似,不同的是逻辑回归不预测值,是预测一个类别概率

3 损失函数怎么设计的,损失函数是最容易做改进的(正则惩罚项主要是防止过拟合的)

但是计算数据损失和正则话惩罚的时候两者是矛盾的,前者是希望计算的越精确越好,以分类为例,前者希望将所有的主体都能正确分类,但是这样的话会导致模型太复杂造成过拟合,后者是通过正则化来降低模型复杂度,让模型满足大多数正确就可以,提高模型的泛化和普适性。 为了解决两者的矛盾,可以给正则惩罚项增加一个权重来调整

4 Softmax分类器

前面所讲的都是最终得到一个值,但是神经网络是通过多层的线型回归来得到对一个概念的概率,概率要保证在0-1之间,Softmax分类器就是来做这一步的

先看蓝色框,虽然能看到差异,但是不同类别之间数值差异比较小,先通过exp操作放大差异,放大后的差异如红色框所示。

然后进行归一化(也就是得到不同类别的概率值),先把所有的计算数值相加,然后用(当前类别的数值/数值总和)得到不同类别的概率。

最后计算损失值(惩罚值),正确类别的概率越小,损失值越大

5 前向传播,反向传播(这个是更新权重的一个过程)

前向传播(Forward Propagation)

  • 在前向传播过程中,输入数据通过神经网络,逐层进行计算和传递,最终得到模型的输出。
  • 在每一层,输入数据被与该层的权重相乘,并加上偏置项(如果有),然后通过激活函数进行处理,生成该层的输出。
  • 这个输出作为下一层的输入,依此类推,直到达到输出层。

反向传播(Backward Propagation)

  • 在反向传播过程中,首先根据模型的输出和真实标签计算损失函数。
  • 然后,从输出层开始,反向逐层传播误差,将损失通过链式法则传播回每一层的权重,以更新权重和偏置项,从而最小化损失。
  • 这一过程通常使用梯度下降等优化算法来更新模型参数,使其朝着损失函数下降的方向调整。

前向传播用于进行预测,而反向传播用于训练神经网络,使其能够逐步优化模型参数,以使其对给定的输入数据能够产生更准确的输出。

6 batch_size能决定什么?小的话会导致什么,大的话会导致什么?越大越好?

batch_size 是指在训练神经网络时,每次更新模型参数时所使用的样本数量。它对训练过程和结果有着重要的影响。

小的batch_size

  • 优点:
    • 更频繁地更新模型参数,可能使训练过程更快收敛。
    • 占用较少的内存,适用于内存资源有限的情况。
  • 缺点:
    • 更新频率高,但每次更新的方向可能较为不稳定,可能导致训练过程中的震荡或不稳定。
    • 由于每次只利用少量样本更新参数,可能使得梯度估计的不准确,降低模型的泛化性能。

大的batch_size

  • 优点:
    • 每次更新参数时利用更多的样本信息,可能使得梯度估计更准确,提高模型的泛化性能。
    • 可能使训练过程更为稳定,减少训练过程中的震荡。
  • 缺点:
    • 需要更多的内存资源,可能会受限于硬件资源的限制。
    • 更新参数的频率降低,可能使得训练过程收敛速度变慢。

在选择batch_size时,需要权衡这些因素,并根据具体问题和硬件资源来进行调整。并非总是越大越好,最佳的batch_size大小取决于具体的任务、数据集和硬件条件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值