machine learning 之 Neural Network 1

整理自Andrew Ng的machine learning课程week 4. 

 

目录:

  • 为什么要用神经网络
  • 神经网络的模型表示 1
  • 神经网络的模型表示 2
  • 实例1
  • 实例2
  • 多分类问题

 

1、为什么要用神经网络

当我们有大量的features时:如x1,x2,x3.......x100x1,x2,x3.......x100

假设我们现在使用一个非线性的模型,多项式最高次为2次,那么对于非线性分类问题而言,如果使用逻辑回归的话:

g(θ0+θ1x1+θ2x2+θ3x1x2+θ4x21x2+........)g(θ0+θ1x1+θ2x2+θ3x1x2+θ4x21x2+........)

大约有5000(n22n22)个特征,也就是说O(n2),那么当多项式的次数为3次时,结果更加的大,O(n3)

这样多的特征带来的后果是:1.过拟合的可能性增大     2.计算的耗费很大

 

举个更加极端的例子,在图像问题中,每一个像素就相当于一个特征,仅对于一个50*50(已经是非常小的图片了)的图像而言,如果是灰度图像,就有2500个特征了,RGB图像则有7500个特征,对于每个特征还有255个取值;

对于这样的一个图像而言,如果用二次特征的话,就有大概3百万个特征了,如果这时候还用逻辑回归的话,计算的耗费就相当的大了

这个时候我们就需要用到neural network了。

 

2、神经网络的模型表示1

 神经网络的基本结构如下图所示:

x0,x1,x2,x3x0,x1,x2,x3是输入单元,x0x0又被称为bias unit,你可以把bias unit都设置为1;

θθ是权重(或者直接说参数),连接输入和输出的权重参数;

hθ(x)hθ(x)是输出的结果;

对于以下的网络结构,我们有以下定义和计算公式:

 

a(j)ia(j)i:在第j层的第i个单元的activation(就是这个单元的值),中间层我们称之为hidden layers

sjsj:第j层的单元数目

Θ(j)Θ(j):权重矩阵,控制了从第j层到第j+1层的映射关系,Θ(j)Θ(j)的维度为sj+1(sj+1)sj+1(sj+1)

对于a(2)a(2)的计算公式为:

a(2)1=g(θ(1)10x0+θ(1)11x1+θ(1)12x2+θ(1)x313)a(2)1=g(θ(1)10x0+θ(1)11x1+θ(1)12x2+θ(1)x313)

a(2)2=g(θ(1)20x0+θ(1)21x1+θ(1)22x2+θ(1)23x3)a(2)2=g(θ(1)20x0+θ(1)21x1+θ(1)22x2+θ(1)23x3)

a(2)3=g(θ(1)30x0+θ(1)31x1+θ(1)32x2+θ(1)33x3)a(2)3=g(θ(1)30x0+θ(1)31x1+θ(1)32x2+θ(1)33x3)

那么同理,

hΘ(x)=a(3)1=g(θ(2)10a(2)0+θ(2)11a(2)1+θ(2)12a(2)2+θ(2)13a(2)3)hΘ(x)=a(3)1=g(θ(2)10a(2)0+θ(2)11a(2)1+θ(2)12a(2)2+θ(2)13a(2)3)

 

 3、神经网络模型表示2

forward propagation: vectorized implementation

对以上的公式的向量化表示:

z(2)1=θ(1)10x0+θ(1)11x1+θ(1)12x2+θ(1)x313z(2)1=θ(1)10x0+θ(1)11x1+θ(1)12x2+θ(1)x313

a(2)1=g(z(2)1)a(2)1=g(z(2)1)

写成向量即为:

a(1)=x=[x0x1x2x3]          z(2)=[z(2)1z(2)1z(2)1]          Θ(1)=[θ(1)10θ(1)11θ(1)12θ(1)13θ(1)20θ(1)21θ(1)22θ(1)23θ(1)30θ(1)31θ(1)32θ(1)33]

因此:

z(2)=Θ(1)a(1)

a(2)=g(z(2))

加上a(2)0=1

z(3)=Θ(2)a(2)

a(3)=hΘ(x)=g(z(3))

以上即为向量化的表达方式。

 对于每个a(j)都会学习到不同的特征

 

4、实例1

先来看一个分类问题,XOR/XNOR,对于x1,x20,1,当x1和x2不同(0,1或者1,0)时,y为1,相同时y为0;y=x1 xnor n2

 

对于一个简单的分类问题 AND:

可以用如下的神经网络结构得到正确的分类结果

 

 

同样的,对于OR,我们可以设计出以下的网络,也可以得到正确的结果

 

 5、实例2

接着上面的例子,对于 NOT,以下网络结构可以进行分类:

 

我们回到示例中最初提到的问题:XNOR

当我们组合上述简单例子(AND、OR、NOT)时,就可以得到解决XNOR问题的正确的网络结构:

 

 

6、多分类问题

在neural network中的多分类问题的解决,也是用的one vs all的思想,在二分类问题中,我们是输出不是0就是1,而在多分类问题中,输出的结果是一个one hot向量,hΘ(x)Rk,k代表类别数目

比如说对于一个4类问题,输出可能为:

类别1:[0001], 类别2:[0010], 类别3:[0100] , 等等

你不可以把hΘ(x)输出为1,2,3,4

 

posted @   Echo_fy  阅读(313)  评论(0编辑  收藏  举报
编辑推荐:
· 大模型 Token 究竟是啥:图解大模型Token
· 35岁程序员的中年求职记:四次碰壁后的深度反思
· 继承的思维:从思维模式到架构设计的深度解析
· 如何在 .NET 中 使用 ANTLR4
· 后端思维之高并发处理方案
阅读排行:
· 感觉程序员要被 AI 淘汰了?学什么才有机会?
· Dify开发必备:分享8个官方文档不曾解释的关键技巧
· 活动中台系统慢 SQL 治理实践
· BotSharp + MCP 三步实现智能体开发
· “你觉得客户需要”是杀死TA的最后一根稻草 | IPD集成产品开发
点击右上角即可分享
微信分享提示