IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 深入浅出理解机器学习算法—神经网络(前向传播) -> 正文阅读

[人工智能]深入浅出理解机器学习算法—神经网络(前向传播)

一、神经网络表述

我们之前学的,无论是线性回归还是逻辑回归都有这样一个缺点,即:当特征太多时,计算的负荷会非常大。

那特征能有多大呢?下面是一个计算机视觉中的例子:

在这里插入图片描述
如上图所示,如果选取一小块 50 ? 50 50*50 50?50像素的灰度图片(一个像素只有亮度一个值),选择每个像素点作为特征,则特征总量 n = 2500 n=2500 n=2500,换算成RGB,一个像素有三个值,则 n = 7500 n=7500 n=7500,如果将其两两组合成新特征,则特征数量为 C 2500 2 = 2500 ! 2 ≈ 3 ?? m i l l o n C_{2500}^2=\frac{2500!}{2}\approx 3\;millon C25002?=22500!?3millon

普通的逻辑回归模型,不能有效的处理这么多的特征,所以需要神经网络算法。

二、模型表示1

先看一下大脑的神经元长什么样:

在这里插入图片描述
想象一下印刷厂中流水线的工人,每个工人都有特定的任务,比如装订,塑封,贴防伪标识等等,工人们看到书本并处理完自己的任务后,就回放回传送带,紧接着传送带就传给下一个环节的工人,如此不断重复从而完成一个又一个环节,直到一本书印制完成。

那么类比一下,把上图中的细胞核类比成工人,轴突类比传送带,树突则比类比成工人的双眼。一个又一个细胞体,从树突接收需要处理的信息,对其进行处理后,再经由轴突通过电信号把处理完的信息传递出去,直到理解信息的内容。

人工神经网络中,树突对应输入(input),细胞核对应激活单元(activation unit),轴突对应输出(output)

我们一般把神经网络划分为三部分(注意,不是只有三层!),即输入层(input layer)隐藏层(hidden layer)输出层(output layer)

具体如下图所示:

图中的一个圈表示神经网络中的一个激活单元,输入层对应输入单元,隐藏层对应中间单元,输出层则对应输出单元。

中间激活单元应用激活函数(activation_function)处理数据。

下面列出一些已有概念在神经网络中的别称:

  1. x 0 x_0 x0?:偏置单元, x 0 = 1 x_0=1 x0?=1
  2. Θ \Theta Θ:权重,即参数;
  3. 激活函数: g g g,即逻辑函数等;
  4. 输入层: 对应于训练集中的特征 x x x
  5. 输出层: 对应于训练集中的结果 y y y
  6. a i ( j ) a_i^{(j)} ai(j)?:第 j j j层第 i i i个激活单元;
  7. Θ ( j ) \Theta^{(j)} Θ(j):从第 j j j层映射到第 j + 1 j+1 j+1层时的权重矩阵;
  8. Θ v , μ ( j ) \Theta_{v,\mu}^{(j)} Θv,μ(j)?:从第 j j j层的第 μ \mu μ个单元映射到第 j + 1 j+1 j+1层的第 v v v个单元的权重;
  9. s j s_j sj?:第 j j j层的激活单元数目(不包含偏置单元)。

每个单元会作用于下一层的所有单元(矩阵乘法运算)。

如果第 j j j层有 s j s_j sj?个单元,第 j + 1 j+1 j+1层有 s j + 1 s_{j+1} sj+1?个单元, 则 Θ j \Theta_j Θj?是一个 s j + 1 ? ( s j + 1 ) s_{j+1}*(s_j+1) sj+1??(sj?+1)维的权重矩阵。即每一层的权重矩阵大小都是非固定的。

其中, + 1 +1 +1来自于偏置单元,这样意味着输出层不包含偏置单元,输入层和隐藏层需要添加偏置单元。

依据本节所给模型,有:

s i z e ( Θ ( 1 ) ) = s j + 1 ? ( s j + 1 ) = s 2 ? ( s 1 + 1 ) = 3 × 4 size(\Theta^{(1)})=s_{j+1}*(s_j+1)=s_2*(s_1+1)=3\times 4 size(Θ(1))=sj+1??(sj?+1)=s2??(s1?+1)=3×4

s i z e ( Θ ( 2 ) = s j + 1 ? ( s j + 1 ) = s 3 ? ( s 2 + 1 ) = 1 × 4 size(\Theta^{(2)}=s_{j+1}*(s_j+1)=s_3*(s_2+1)=1\times 4 size(Θ(2)=sj+1??(sj?+1)=s3??(s2?+1)=1×4

三、模型表示2

对输入层的所有激活单元应用激活函数,从而得到隐藏层中激活单元的值:
a 1 ( 2 ) = g ( Θ 10 ( 1 ) x 0 + Θ 11 ( 1 ) x 1 + Θ 12 ( 1 ) x 2 + Θ 13 ( 1 ) x 3 ) a_1^{(2)}=g(\Theta_{10}^{(1)}x_0+\Theta_{11}^{(1)}x_1+\Theta_{12}^{(1)}x_2+\Theta_{13}^{(1)}x_3) a1(2)?=g(Θ10(1)?x0?+Θ11(1)?x1?+Θ12(1)?x2?+Θ13(1)?x3?)
a 2 ( 2 ) = g ( Θ 20 ( 1 ) x 0 + Θ 21 ( 1 ) x 1 + Θ 22 ( 1 ) x 2 + Θ 23 ( 1 ) x 3 ) a_2^{(2)}=g(\Theta_{20}^{(1)}x_0+\Theta_{21}^{(1)}x_1+\Theta_{22}^{(1)}x_2+\Theta_{23}^{(1)}x_3) a2(2)?=g(Θ20(1)?x0?+Θ21(1)?x1?+Θ22(1)?x2?+Θ23(1)?x3?)
a 3 ( 2 ) = g ( Θ 30 ( 1 ) x 0 + Θ 31 ( 1 ) x 1 + Θ 32 ( 1 ) x 2 + Θ 33 ( 1 ) x 3 ) a_3^{(2)}=g(\Theta_{30}^{(1)}x_0+\Theta_{31}^{(1)}x_1+\Theta_{32}^{(1)}x_2+\Theta_{33}^{(1)}x_3) a3(2)?=g(Θ30(1)?x0?+Θ31(1)?x1?+Θ32(1)?x2?+Θ33(1)?x3?)
对 Layer 2中的所有激活单元应用激活函数,从而得到输出:
h Θ ( x ) = g ( Θ 10 ( 2 ) a 0 ( 2 ) + Θ 11 ( 2 ) a 1 ( 2 ) + Θ 12 ( 2 ) a 2 ( 2 ) + Θ 13 ( 2 ) a 3 ( 2 ) ) h_{\Theta}(x)=g(\Theta_{10}^{(2)}a_0^{(2)}+\Theta_{11}^{(2)}a_1^{(2)}+\Theta_{12}^{(2)}a_2^{(2)}+\Theta_{13}^{(2)}a_3^{(2)}) hΘ?(x)=g(Θ10(2)?a0(2)?+Θ11(2)?a1(2)?+Θ12(2)?a2(2)?+Θ13(2)?a3(2)?)
上面的计算过程被称为前向传播(Forward propagation),即从输入层开始,一层一层地向下计算并传递结果。

再回顾一下逻辑回归:
h θ ( x ) = g ( θ 0 + θ 1 x 1 + θ 2 x 2 + θ 3 x 3 ) h_{\theta}(x)=g(\theta_0+\theta_1x_1+\theta_2x_2+\theta_3x_3) hθ?(x)=g(θ0?+θ1?x1?+θ2?x2?+θ3?x3?)
是不是除了符号表示,其他都完全一样?

其实神经网络就好似回归模型,只不过输入变成了中间单元 a 1 ( j ) ?? , ?? a 2 ( j ) ?? , ?? ? ?? , ?? a n ( j ) a_1^{(j)}\;,\;a_2^{(j)}\;,\;\cdots\;,\;a_n^{(j)} a1(j)?,a2(j)?,?,an(j)?。从输入 x x x开始,下一层的每个激活单元都包含了上一层的所有信息(单元值),通过最优化算法不断迭代计算,激活单元能得出关于输入 x x x的更多信息,这就好像是在给假设函数加多项式。隐藏层的这些单元好似升级版的初始特征,从而能给出更好的预测。

向量化实现

a ( 1 ) = x = { x 0 x 1 x 2 x 3 } a^{(1)}=x=\left\{ \begin{matrix*} x_0 \\ x_1 \\ x_2 \\ x_3 \end{matrix*} \right\} a(1)=x=? ? ??x0?x1?x2?x3??? ? ??
Θ ( 1 ) = { Θ 10 ( 1 ) Θ 11 ( 1 ) Θ 12 ( 1 ) Θ 13 ( 1 ) Θ 20 ( 1 ) Θ 21 ( 1 ) Θ 22 ( 1 ) Θ 23 ( 1 ) Θ 30 ( 1 ) Θ 31 ( 1 ) Θ 32 ( 1 ) Θ 33 ( 1 ) } \Theta^{(1)}=\left\{ \begin{matrix} \Theta_{10}^{(1)} & \Theta_{11}^{(1)} & \Theta_{12}^{(1)} & \Theta_{13}^{(1)} \\ \Theta_{20}^{(1)} & \Theta_{21}^{(1)} & \Theta_{22}^{(1)} & \Theta_{23}^{(1)} \\ \Theta_{30}^{(1)} & \Theta_{31}^{(1)} & \Theta_{32}^{(1)} & \Theta_{33}^{(1)} \end{matrix} \right\} Θ(1)=? ? ??Θ10(1)?Θ20(1)?Θ30(1)??Θ11(1)?Θ21(1)?Θ31(1)??Θ12(1)?Θ22(1)?Θ32(1)??Θ13(1)?Θ23(1)?Θ33(1)??? ? ??
a 1 ( 2 ) = g ( z 1 ( 2 ) ) ?? , ?? a 2 ( 2 ) = g ( z 2 ( 2 ) ) ?? , ?? a 3 ( 2 ) = g ( z 3 ( 2 ) ) a_1^{(2)}=g(z_1^{(2)})\;,\;a_2^{(2)}=g(z_2^{(2)})\;,\;a_3^{(2) }=g(z_3^{(2)}) a1(2)?=g(z1(2)?),a2(2)?=g(z2(2)?),a3(2)?=g(z3(2)?)
z ( 2 ) = { z 1 ( 2 ) z 2 ( 2 ) z 3 ( 2 ) } z^{(2)}=\left\{ \begin{matrix} z_1^{(2)}\\ z_2^{(2)}\\ z_3^{(2)} \end{matrix} \right\} z(2)=? ? ??z1(2)?z2(2)?z3(2)??? ? ??
则有 a ( 2 ) = g ( Θ ( 1 ) a ( 1 ) ) = g ( z ( 2 ) ) a^{(2)}=g(\Theta^{(1)}a^{(1)})=g(z^{(2)}) a(2)=g(Θ(1)a(1))=g(z(2))

预测结果为:
h Θ ( x ) = a ( 3 ) = g ( Θ ( 2 ) a ( 2 ) ) = g ( z ( 3 ) ) h_{\Theta}(x)=a^{(3)}=g(\Theta^{(2)}a^{(2)})=g(z^{(3)}) hΘ?(x)=a(3)=g(Θ(2)a(2))=g(z(3))
则有:
z i ( j ) = Θ i , 0 ( j ? 1 ) a 0 ( j ? 1 ) + Θ i , 1 ( j ? 1 ) a 0 ( j ? 1 ) + ? + Θ i , n ( j ? 1 ) a n ( j ? 1 ) z_i^{(j)}=\Theta_{i,0}^{(j-1)}a_0^{(j-1)}+\Theta_{i,1}^{(j-1)}a_0^{(j-1)}+\cdots+\Theta_{i,n}^{(j-1)}a_n^{(j-1)} zi(j)?=Θi,0(j?1)?a0(j?1)?+Θi,1(j?1)?a0(j?1)?+?+Θi,n(j?1)?an(j?1)?
z ( j ) = Θ ( j ? 1 ) a ( j ? 1 ) ?? , ?? a ( j ) = g ( z ( j ) ) z^{(j)}=\Theta^{(j-1)}a^{(j-1)}\;,\;a^{(j)}=g(z^{(j)}) z(j)=Θ(j?1)a(j?1),a(j)=g(z(j))
通过该式即可计算神经网络中每一层的值。

扩展到所有样本实例:
z ( 2 ) = Θ ( 1 ) X T z^{(2)}=\Theta^{(1)}X^T z(2)=Θ(1)XT
这时 z ( 2 ) z^{(2)} z(2)是一个 s 2 × m s_2\times m s2?×m维的矩阵。

其中各个字母的代表意思维:
m :训练集中的样本实例数量 m:训练集中的样本实例数量 m:训练集中的样本实例数量
s 2 :第二层神经网络中激活单元的数量 s_2:第二层神经网络中激活单元的数量 s2?:第二层神经网络中激活单元的数量

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-09-15 02:00:48  更:2022-09-15 02:03:03 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/28 18:45:41-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计