Datawhale X 李宏毅苹果书 AI夏令营 Task2打卡

2024-09-01 20:28

本文主要是介绍Datawhale X 李宏毅苹果书 AI夏令营 Task2打卡,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

线性模型(Linear model)

通常模型的修改来自于对问题的理解,即领域知识

 基本定义:把输入特征x乘上一个权重,再加上一个偏置就可以得到预测的结果。

优点:简单易理解,可理解性好(权重w可以直观表达了各属性在预测中的重要性)

1 分段线性曲线

1.1 线性模型的局限性

  • Linear(线性)的Model太过简单,对于绝大多数的实际情况来说x1与y的关系不是简单的线性关系。
  • 随著 x1 越来越高,y 就应该越来越大,可以通过设定不同的 w改变这条线的斜率,可以设定不同的 b改变这一条蓝色的直线跟 y 轴的交点,但是无论怎么改 w 和 b,x1与y永远都是线性关系,永远都是x1越大y就越大。
  • 模型的偏差(Model Bias):无论如何调整Model中的参数,都无法用Linear的Model制造类似红色的折线,也就是指模型无法模拟真实情况。

1.2 分段曲线的拟合

图中的各种Curves(曲线)都是由许多线段组成的,称为Piecewise Linear 的 Curves(分段线性曲线)。这些曲线都可以用常数+各种蓝色Function组成。曲线转折越多、越复杂,需要的蓝色Function就越多。

在实际案例的训练数据选择中,有时也会考虑数据本身的周期性等规律,以求更好减小模型在训练数据上的损失。

1.3 连续曲线的拟合

基于分段曲线可以逼近任何连续曲线的原理,我们可以使用Sigmoid函数来逼近Hard Sigmoid函数

当x1的值趋近于无穷大时,指数项会消失,函数收敛于c处,当x1趋近于负无穷小,y的值则趋近于0。

1.3.1 Sigmoid函数

中调整 b、w 和 c 可以制造各种不同形状的 Sigmoid 函数

 

在拟合连续曲线时,使用的Sigmoid函数数量(超参数的一种)可以自行设定,其数量越多,就可以产生有越多断线的分段线性函数,可以逼近更复杂的函数。

1.3.2 损失函数的计算

在这种拟合情况下,将损失函数设置为L(θ),其中,θ代表某一组W,b,的值,通过带入特征值x,可以得到预估的y,从而得到与真实标签之间的误差e,将所有误差通过一定计算进行总和,可以得到对应损失。

为了优化模型,减小损失,可以在一开始先设置一个初始值θ0,

一般来说,梯度更新的停止条件是计算出梯度为0向量,导致无法再更新参数(较小可能)或者我们主动终止计算。

1.3.3 批量

批量(batch):存有B笔数据(N笔数据被随机分成一个个批量)的一组数据。

在实际情况中,通常是每次先选一个批量计算损失函数L的值,并进行梯度更新。当所有批量都看过一次后,称为一个回合(epoch)

注:每次更新一次参数叫做一次更新,把所有的批量都看过一遍,叫做一个回合

2 模型变形

2.1 修正线性单元(Rectified Linear Unit,ReLU)

定义:是一种常用的人工神经网络中的激活函数(activation function)

形式 f(x) = max(0,x)/。它在x大于零的时候激活,输出x;在x小于等于零的时候不激活,输出零。

优点:计算简单、神经元数量少、训练速度快、避免梯度消失的问题等。

它已成为现代神经网络中最为普遍的激活函数之一,用于隐藏层中。

 2.2 神经网络(neural network)

过拟合(overfitting):模型在训练数据和测试数据上的能力/结果不一致。

3 机器学习框架

对于训练集,训练过程有3个步骤:

知识竞答

①下面哪种激活函数可以用来逼近Hard Sigmoid函数

A) ReLU
B) Sigmoid
C) tanh
D) softmax
E) ELU

B

②在深度学习中,我们经常遇到过拟合现象。以下哪些方法可以用来解决过拟合现象?

A) 增加训练数据量
B) 减少模型的参数数量
C) 增加模型的层数
D) 使用正则化技术
E) 使用Dropout技术

ABDE

③在预测观看人次的模型中,考虑前 7 天的数据而非前 1 天的数据有什么好处?
A. 可以降低模型的复杂度
B. 可以减少训练时间
C. 可以捕捉数据的周期性变化,降低损失
D. 可以提高模型的非线性能力
E. 可以避免过拟合

C

④教程中提到,模型在训练数据上的性能通常好于在测试数据上的性能。这种现象为什么会发生?

这种现象发生是因为模型直接在训练数据上优化,不可避免会学习到一些训练数据特有的模式,包括可能的噪声。测试数据代表了模型未见过的数据,更能反映模型的泛化能力。在实际应用中,应该更关注模型在测试数据上的表现。

⑤在教程的视频观看次数预测例子中,我们看到了如何从考虑前1天扩展到考虑前7天、28天甚至56天。这种扩展的意义是什么?教程中显示,从28天增加到56天时,在未见过的数据上的性能并没有显著提升,为什么考虑更多天数不一定总能提高预测准确性?

扩展考虑的天数允许模型捕捉更长期的模式,如周期性变化。然而,考虑更多天数并不总是能提高准确性,因为:1) 可能引入无关或噪声信息;2) 增加了模型复杂度,可能导致过拟合;3) 很久以前的数据可能对当前预测不再相关。

⑥在视频观看人数预测模型中,为什么使用100个ReLU比使用10个ReLU效果更好?这种改进是否总是有效的?

每一层ReLU都可以被视为对数据的一次非线性变换,使用更多的ReLU可以增加模型的复杂度,使其能够捕捉更复杂的非线性关系。100个ReLU相比于10个ReLU,可以学习更细致的模式,有更强的表达能力。然而,这种改进并非总是有效,因为过多的ReLU可能导致过拟合,特别是在数据量较小的情况下。此外,还需要考虑计算资源和推理时间的限制。应该在模型性能不再显著提升,或者验证集性能开始下降时停止增加复杂度。

⑦在教程中,我们看到了如何使用ReLU函数构建深层网络。为什么要在每个线性变换后都加入非线性激活函数?如果去掉这些激活函数会发生什么?

非线性激活函数(如ReLU)在每个线性变换后引入非线性变换,使得模型能够学习复杂的非线性关系。如果去掉这些激活函数,多层线性变换可以简化为单个线性变换,这会大大降低模型的表达能力,使其无法捕捉复杂的模式。

⑧在改进模型时,为什么使用ReLU函数比使用Sigmoid函数效果更好?这可能与什么因素有关?

ReLU函数比Sigmoid函数计算更简单,能缓解梯度消失问题,允许模型学习更复杂的非线性关系。在视频观看人数预测这种可能存在突然变化的场景中,ReLU的非饱和性可能更有利于捕捉数据中的急剧变化。

与Sigmoid激活函数相比,ReLU有几个明显的优点。首先,ReLU在处理正数时非常简单,它直接将正数传递出去,这使得计算更高效。相比之下,Sigmoid函数在处理正数时会变得非常平缓,导致梯度变得非常小,这使得训练过程变得缓慢。这种平缓的性质还可能导致训练过程中会出现梯度消失的问题,即模型在训练时更新参数的速度变得非常慢。
其次,ReLU函数的计算过程非常简单,只需检查输入是否大于零,这使得模型训练速度更快。而Sigmoid函数需要进行复杂的数学运算,这会增加计算的复杂性和时间。

⑨在使用梯度下降法优化模型时,为什么使用小批量而不是整个数据集?这种方法有什么优势和劣势?

优势:
小批量更新可以充分利用现代计算硬件(如GPU)的并行处理能力,而且不需要等待整个数据集的梯度计算完成就可以更新参数,从而加快训练速度。其次,处理整个数据集可能需要大量内存,而小批量可以在有限的内存中进行训练,使得训练过程更加可行。另外还引入了一定的随机性,有助于逃离局部最小值
劣势:
由于小批量梯度下降每次更新都是基于一个子集的估计,这可能导致收敛路径不如全批量梯度下降平滑,有时可能会出现震荡或不稳定。此外,选择小批量的大小是一个需要经验的过程,不同的大小可能对训练过程的效率和模型性能产生影响。过小的批量可能导致梯度估计不准确,过大的批量可能导致内存不足或训练速度慢。

参考资料

Datawhale (linklearner.com)

机器学习——线性模型(内附详细公式推导)_简单描述几个线性模型建立的过程-CSDN博客

这篇关于Datawhale X 李宏毅苹果书 AI夏令营 Task2打卡的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1127961

相关文章

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

Spring AI ectorStore的使用流程

《SpringAIectorStore的使用流程》SpringAI中的VectorStore是一种用于存储和检索高维向量数据的数据库或存储解决方案,它在AI应用中发挥着至关重要的作用,本文给大家介... 目录一、VectorStore的基本概念二、VectorStore的核心接口三、VectorStore的

Spring AI集成DeepSeek三步搞定Java智能应用的详细过程

《SpringAI集成DeepSeek三步搞定Java智能应用的详细过程》本文介绍了如何使用SpringAI集成DeepSeek,一个国内顶尖的多模态大模型,SpringAI提供了一套统一的接口,简... 目录DeepSeek 介绍Spring AI 是什么?Spring AI 的主要功能包括1、环境准备2

Spring AI集成DeepSeek实现流式输出的操作方法

《SpringAI集成DeepSeek实现流式输出的操作方法》本文介绍了如何在SpringBoot中使用Sse(Server-SentEvents)技术实现流式输出,后端使用SpringMVC中的S... 目录一、后端代码二、前端代码三、运行项目小天有话说题外话参考资料前面一篇文章我们实现了《Spring

Spring AI与DeepSeek实战一之快速打造智能对话应用

《SpringAI与DeepSeek实战一之快速打造智能对话应用》本文详细介绍了如何通过SpringAI框架集成DeepSeek大模型,实现普通对话和流式对话功能,步骤包括申请API-KEY、项目搭... 目录一、概述二、申请DeepSeek的API-KEY三、项目搭建3.1. 开发环境要求3.2. mav

C#集成DeepSeek模型实现AI私有化的流程步骤(本地部署与API调用教程)

《C#集成DeepSeek模型实现AI私有化的流程步骤(本地部署与API调用教程)》本文主要介绍了C#集成DeepSeek模型实现AI私有化的方法,包括搭建基础环境,如安装Ollama和下载DeepS... 目录前言搭建基础环境1、安装 Ollama2、下载 DeepSeek R1 模型客户端 ChatBo

Spring AI集成DeepSeek的详细步骤

《SpringAI集成DeepSeek的详细步骤》DeepSeek作为一款卓越的国产AI模型,越来越多的公司考虑在自己的应用中集成,对于Java应用来说,我们可以借助SpringAI集成DeepSe... 目录DeepSeek 介绍Spring AI 是什么?1、环境准备2、构建项目2.1、pom依赖2.2

Deepseek R1模型本地化部署+API接口调用详细教程(释放AI生产力)

《DeepseekR1模型本地化部署+API接口调用详细教程(释放AI生产力)》本文介绍了本地部署DeepSeekR1模型和通过API调用将其集成到VSCode中的过程,作者详细步骤展示了如何下载和... 目录前言一、deepseek R1模型与chatGPT o1系列模型对比二、本地部署步骤1.安装oll

Spring AI Alibaba接入大模型时的依赖问题小结

《SpringAIAlibaba接入大模型时的依赖问题小结》文章介绍了如何在pom.xml文件中配置SpringAIAlibaba依赖,并提供了一个示例pom.xml文件,同时,建议将Maven仓... 目录(一)pom.XML文件:(二)application.yml配置文件(一)pom.xml文件:首

SpringBoot整合DeepSeek实现AI对话功能

《SpringBoot整合DeepSeek实现AI对话功能》本文介绍了如何在SpringBoot项目中整合DeepSeekAPI和本地私有化部署DeepSeekR1模型,通过SpringAI框架简化了... 目录Spring AI版本依赖整合DeepSeek API key整合本地化部署的DeepSeek