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,x2∈0,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
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 大模型 Token 究竟是啥:图解大模型Token
· 35岁程序员的中年求职记:四次碰壁后的深度反思
· 继承的思维:从思维模式到架构设计的深度解析
· 如何在 .NET 中 使用 ANTLR4
· 后端思维之高并发处理方案
· 感觉程序员要被 AI 淘汰了?学什么才有机会?
· Dify开发必备:分享8个官方文档不曾解释的关键技巧
· 活动中台系统慢 SQL 治理实践
· BotSharp + MCP 三步实现智能体开发
· “你觉得客户需要”是杀死TA的最后一根稻草 | IPD集成产品开发