神经网络

0 阅读5分钟

我是快乐的分界线:上周请假带娃去旅行。这次我们去了浙江的嵊州和温州。一路吃吃玩玩看风景:嵊州的豆腐包超绝,买了一大堆年糕制作的小吃(开车路上嘴巴就没停过)。温州的泡泡(也就是炸串)、灯盏糕、臭豆腐、鱼饼也美味。罪恶的我周六晚上六点半一到上海就去组了个3小时单打网球局,周末双打了2小时+1小时陪coco发球机训练,终于有点把吃进去的消化的感觉。好家伙周一上称,他们两个都重了3斤,我没变。

1.非线性假设

无论线性回归还是逻辑回归,当特征太多时,计算的负荷会非常大,这个时候需要神经网络。

2.模型表示1

1.大脑中的神经网络
每一个神经元都可以被认为是一个处理单元/神经核(processing unit/Nucleus),它含有许多输入/树突(input/Dendrite),并且有一个输出/轴突(output/Axon)。神经网络是大量神经元相互链接并通过电脉冲来交流的一个网络。
  • 神经网络模型建立在很多神经元之上,每一个神经元又是一个个学习模型。这些神经元(也叫激活单元)采纳一些特征作为输出,并且根据本身的模型提供一个输出。
  • 下图是一个以逻辑回归模型作为自身学习模型的神经元示例,在神经网络中,参数又可被称为权重。

0ffaec0a-bf5f-4163-b7d9-96e8533779d7.png

  • 基于此,我们设计了类似于神经元的神经网络,效果如下:

Pasted image 20260316103157.png

其中x1,x2,x3x_{1},x_{2},x_{3}是输入单元,我们将原始数据输入给他们,a1,a2,a3是中间单元a_{1},a_{2},a_{3}是中间单元,他们负责将数据进行处理,然后呈递到下一层。最后是输出单元,它负责计算hθ(x)h_{\theta}(x)

  • 神经网络模型是许多逻辑单元按照不同层级组织起来的网络,每一层的输出变量都是下一层的输入变量:第一层称为输入层,最后一层称为输出层,中间称为隐藏层,且我们为每一层都增加一个偏差单位。
  • 引入一些标记法来帮助描述模型: ai(j)a_{i}^{(j)}代表第j层的第i个激活单元。θ(j)\theta^{(j)}代表从第j层映射到第j+1层时的权重的矩阵,例如θ(1)\theta^{(1)}代表从第一层映射到第二层的权重的矩阵。其尺寸为:以第j+1层的激活单元数量为行数(也就是3),以第j层的激活单元数加一(3+1)为列数的矩阵,故θ(1)\theta^{(1)}的尺寸为3*4。
  • 对于上图所示的模型,激活单元和输出分别表达为:

Pasted image 20260316111629.png

  • 以上的讨论只是将特征矩阵中的一行(一个训练示例)喂给了神经网络,我们需要将整个训练集都喂给神经网络算法来学习模型。
  • 每一个a都是由上一层所有的x和每一个x所对应的θ\theta所决定的。(我们把这样从左到右的算法称为前向传播算法(FORWARD PROPAGATION)
  • x,θ,ax,\theta,a分别用矩阵表示,可以得到θX=a\theta*X =a:

Pasted image 20260316130443.png

3.模型表示2
前向传播算法相对于使用循环来编码,利用向量化的方法会使得计算更为方便。

以上门的神经网络为例,试着计算第二层的值:

Pasted image 20260316131352.png 以上只是针对训练集中一个训练实例进行的计算,如果要对整个训练集进行计算,需要将训练集特征矩阵进行转置,使得同一个实例的特征都在同一列里。即: z(2)=θ(1)XTz^{(2)} = \theta^{(1)} * X^T a(2)=g(Z(2))a^{(2)} = g(Z^{(2)})

4.特征和直观理解1
从本质上讲,神经网络能通过学习得出其自身的一系列特征。在神经网络中,最后一层的输入值是神经网络通过学习输入的特征后自己得出的一系列用于预测输出变量的新特征,非原始特征。
  • 神经网络中,单层神经元(无中间层)的计算可用来表示逻辑运算,比如逻辑 与(AND)、或(OR)
  • 举例说明: 逻辑 与(AND):我们可以用这样一个神经网络表示AND函数:

Pasted image 20260316151503.png

其中θ0=30,θ1=20,θ2=20\theta_{0}=-30,\theta_{1}=20,\theta_{2}=20 输出函数hθ(x)=g(30+20x1+20x2)h_{\theta}(x)=g(-30+20x_{1}+20x_{2}) g(x)的图像为:

Pasted image 20260316151746.png

Pasted image 20260316151900.png 所以:hθ(x)=x1ANDx2h_{\theta}(x)=x_{1} AND x_{2} 即 AND函数

接下来介绍OR函数:

Pasted image 20260316152113.png OR 与AND整体一样,区别只在于取值不同。

5.样本和直观理解Ⅱ

二元逻辑运算符(BINARY LOGICAL OPERATIORS)当输入特征为布尔值(01)时,可以用一个单一的激活层作为二元逻辑运算符,为了表示出不同的运算符,只需要选择不同的权重即可。
  • 下图的神经元(三个权重分别为-30,20,20)可以被视为作用同于逻辑 与(AND):

Pasted image 20260316152702.png

  • 下图的神经元(三个权重分别为-10,20,20)--逻辑 或(OR):

Pasted image 20260316152754.png

  • 下图的神经元(两个权重分别为10,-20)--逻辑非(NOT):

Pasted image 20260316152923.png

  • XNOR:输入的两个值必须一样,均为1或均为0,即: XNOR=(x1ANDx2)OR((NOTx1)AND(NOTx2))XNOR=(x_{1} AND x_{2}) OR ((NOTx_{1}) AND(NOTx_{2})) 首先构造(NOTx1)AND(NOTx2)(NOTx_{1})AND(NOTx_{2})部分的神经元:

Pasted image 20260316153454.png 然后将表示AND的神经元和表示(NOTx1)AND(NOTx2)(NOTx_{1})AND(NOTx_{2})的神经元以及表示OR的神经元进行组合:

Pasted image 20260316154034.png 按照这种方法可以逐渐构造出越来越复杂的函数,也能得到更加厉害的特征值。