神经网络--理解

一些概念:

  • 损失函数:单个训练示例的误差。最经典的是“平方误差”来计算,即预测值与实际值差值的平方。

  • 代价函数:整个训练集的损失函数的平均值。

  • 最优化:求损失函数达到最小时的权重和偏置。

  • 学习率:训练神经网络时,通常使用梯度下降法来优化参数。在每次迭代中,我们都使用反向传播来计算每个权重的损失函数的导数,并从这个权重中减去它。学习率决定了你想要更新权重(参数)值的速度。学习率不能太低导致收敛的速度缓慢,也不能太高导致找不到局部最小值。

  • epoch:循环训练的次数。

  • batch:批次,就是每次训练模型时,喂入的数据的大小。

对神经网络的理解:

现在有一个 目标函数f*(x)

我们只知道目标函数的 输入输出(x和y,也就是featurelabel)。

我们的目的是通过已知的输入和输出,去得到目标函数f*(x)。

我们可以定义一个f(x),然后让这个函数去近似目标函数。神经网络就是类似的例子,

它可以理解成:

  • 通过搭建神经网络,构建出一个函数f(x)(函数可以有多层嵌套,相当于多层神经网络)。

  • 通过f(x)对输入x的学习,会不断优化自身的参数,最终近似于f*(x)。

神经元

神经网络的每一层中,都有很多神经元,每一个神经元都可以看作是一个函数,这个函数称为激活函数。

第一层神经元没有输入、最后一层神经元没有输出。除此以外,每个神经元都含有:

  • 输入x

  • 权重(weight), 记作:w。

  • 偏置(bias),记作:b。

  • 激活函数f(x)

  • 输出y

除第一层神经元之外,其余神经元的输入( x(i+1) )皆为上一层神经元的输出( y(i) )。

xi+1 = yi = f(x * w) = f(x1 * w1 + x2 * w2 + ... + xn * wn)

(n为神经元个数)

这时候,如果我们对神经元是否激活有其他的要求。

  • 如即使加权和大于0,你也不想激活这个神经元;

  • 或者是当加权和大于10时,才激活神经元。

    所以引入了 偏置值 的概念,它起到一个阈值的作用。

在 t 时刻神经元得到输入X(t),只有当X(t) 大于偏置值b的时候,神经元才会在 t + 1 时刻被激活(激活的意思是有输出),否则不会被激活。

​ 如:我们需要当加权和大于10时,才激活神经元。此时偏置值就是:-10。

所以,上述公式变成:

x(i+1) = y(i) = f(x * w - b) = f[(x1 * w1 - b1) + (xn * wn - bn) + ... + (xn * wn - bn)]

这时候,我们可以把多加一个输入X0,并把它的值设为 - 1。还可以把偏置b当成权重w0

所以最终公式为:

yi = f(x * w) = f(x0 * w0 + x1 * w1 + ... + xn * wn)

(x0 为 -1,w0 为 偏置b的值。)

激活函数f(x):

​ 如果我们对输出有要求,需要对输出的值进行某种限制,这时就需要用到激活函数。激活函数的作用是能够给神经网络加入一些非线性因素,使得神经网络可以更好地解决较为复杂的问题。

常见激活函数

  • Sigmoid(): 可以将输出的值映射到[0, 1]的区间又称Logistic曲线

  • Relu():

训练:

每一层都带有权重和偏置,一个网络中的偏置和权值非常多。相当于这个网络有无数个旋钮开关让我们调整,得到我们想要的那个结果。所以,当我们讨论神经网络如何“学习”(又称“训练”)的时候,实际上说的是:我们应该怎样去设置这么多的参数

=================================================

f3( f2( f1(x) ) )

  • 每一个函数为一层网络

  • f1(x) 为第一层,也称作 输入层

  • f3(x) 为最后一层,也称作 输出层

神经网络的核心是:

​ 一层的激活值,通过某种运算,算出下一层的激活值。

机器学习:利用经验改善性能。

神经网络:利用网络自学习算法来确定参数。

神经网络如何得到参数:

  1. 强化合意的行为。
  2. 弱化不合意的行为。
posted @ 2020-11-05 21:30  linlk  阅读(107)  评论(0编辑  收藏  举报