当前位置: 首页 > news >正文

机器学习-02(深度学习的基本概念)

机器学习的步骤

1.定义带有未知参数的函数

线性模型(linear models)具有较大的限制(Model Bias)

        y = b + wx

无论如何更改b或者w,其只会呈现出一条直线,不能满足更加复杂的现实情况。

我们可以将复杂的函数(分段函数)看作:常数(其大小为实际函数与Y轴的交点)+激活函数(在小于某个数值时,为某个常数,在大于某个数值时,为某个常数)

红色为Piecewise Linear Curves(分段函数),蓝色为Hard Sigmoid(激活函数)

第一激活函数的转折点设在实际函数的第一个转角。分段函数的斜率与实际函数的斜率相同。同理第二个激活函数的转折点设为实际函数的第二个转角处,斜率相同......

最终实际函数等于f0+f1+f2+f3 

有多个线段组成的函数称为Piecewise Linear Curves(分段函数),其都可以通过上面的方法组合出来。其转折的次数越多,需要的蓝色函数也越多。

在曲线问题上,我们可以通过微分的思想,在曲线上取足够多的点,以直代曲,这样就可以用直线来逼近这条连续的曲线。

所以可以通过分段函数去逼近任何连续的曲线。

激活函数可以使用一段S型曲线(sigmoid funcation)来逼近它

可以简写为:y = c sigmoid(b+wx1)

通过不断调整b、w和c来制造出不同的S型曲线

前面所求的分段函数就是多个激活函数累加之后的结果

i代表激活函数(蓝色函数),j代表特征的编号(如j = 10,则取前十天的样本进行计算)

wij代表在第i个激活函数里面的第j个特征的权重

其中r1、r2 和r3可以简化为矩阵与向量的加法和乘法:

所以
就可以写成

其中x是输入的特征,灰色的b是标量,w为矩阵,_c{^{T}}和绿色的b是向量

将所有的未知参数进行拆分,拼成一个很长的向量统称为\theta

2.定义来自训练数据中的损失函数

拥有了新的模型之后,Loss与之前的定义方法还是一样的,只是符号更改了一下,变为:        

        L(w,b) ====> L(\theta)  用\theta来代表所有的未知参数

损失函数(Loss function)所作的事情就是,当\theta为某一个数值的时候,会有多好还是有多不好

计算方法与只有两个参数的时候类似,假设给定一个\theta值,再输入一个x,查看估算的y值,计算与真实的\hat{y}(label)之间的差距,以此类推。把所有的误差加起来就得到了Loss

3.最佳化问题

optimization的演算法还是gradient descent。

寻找一组\theta让Loss最小,将这一组\theta称之\theta*。

寻找\theta*:
1.随机选一个初始值\theta0

2.计算微分,对每一个未知的参数都去计算起对L的微分,之后把微分集合起来组成一个向量g(gradient)。

通常的表示方法:,其中倒三角形的意思是把所有的参数\theta1、\theta2、\theta3等对L做微分,算微分的\theta值为\theta0。

3.更新参数列表

其中两式相减是因为梯度的方向式函数增长最快的方向,朝着负方向式下降最快的方向。

重复以上的步骤,不断更新\theta,直至不想继续更新或者得出\theta = 0。

在实际操作中,不是使用全部的数据去计算Loss,而是将数据分为多个batch(批)。多次进行计算,算出L1、L2、L3等,之后计算出gradient。

一次查看所有批次称之为一次epoch,epoch指的是整个训练数据集通过神经网络一次的过程。 每一次更新参数称之为update。、

所以一个epoch并不是更新参数一次。更新次数由batch size决定

例如:

ReLU(另外一种激活函数)

hard sigmoid可以看作式两个rectifier linear unit的叠加。

ReLU比Sigmoid更优。

Sigmoid或者ReLU等可以叫作Neuron,很多的Neuron可以叫作Neuron Network

过拟合(Overfitting) 

指的是在已知的训练资料上变好,而在未知的训练资料上没有变好。

http://www.lqws.cn/news/572185.html

相关文章:

  • 智能新纪元:大语言模型如何重塑电商“人货场”经典范式
  • 【QT】信号和槽(1) 使用 || 定义
  • 深入学习 GORM:记录插入与数据检索
  • MySQL技巧
  • 【ad-hoc】# P12414 「YLLOI-R1-T3」一路向北|普及+
  • Requests源码分析:面试考察角度梳理
  • MySQL 架构
  • 理解 Confluent Schema Registry:Kafka 生态中的结构化数据守护者
  • 第10.4篇 使用预训练的目标检测网络
  • 学习使用Visual Studio分析.net内存转储文件的基本用法
  • C# 委托(调用带引用参数的委托)
  • 计算机组成原理与体系结构-实验四 微程序控制器 (Proteus 8.15)
  • 【硬核数学】3. AI如何应对不确定性?概率论为模型注入“灵魂”《从零构建机器学习、深度学习到LLM的数学认知》
  • 【HuggingFace】模型下载至本地访问
  • SpringMVC实战:从配置到JSON处理全解析
  • 开源免费计划工具:帮你高效规划每一天
  • UE5 Grid3D 学习笔记
  • 什么是IPFS(InterPlanetary File System,星际文件系统)
  • c# 在sql server 数据库中批插入数据
  • C++ 格式化输入输出
  • 「Java案例」输出24个希腊字母
  • 计算机组成原理与体系结构-实验一 进位加法器(Proteus 8.15)
  • Linux下的调试器-gdb(16)
  • 信息安全与网络安全---引言
  • 矩阵的定义和运算 线性代数
  • 设计模式 | 组合模式
  • VMware设置虚拟机为固定IP
  • Transformer结构与代码实现详解
  • redisson看门狗实现原理
  • Linux基本命令篇 —— head命令