跟李沐学AI--深度学习之模型选择

训练误差:模型在训练数据上的误差
泛化误差:模型在新数据上的误差
训练数据集:训练模型参数
验证数据集:一个用来评估模型好坏的数据集,选择模型超参数
测试数据集:只使用一次的数据集
在这里插入图片描述
模型容量:拟合各种函数的能力
低容量的模型难以拟合训练数据,高容量的模型可以记住所有训练数据
在这里插入图片描述
深度学习的核心:在模型足够大的情况下,通过各种手段来控制模型容量,进而降低泛化误差。
很难在不同的种类算法之间比较模型容量
给定一个模型种类,将有两个主要因素:参数的个数,参数值的选择范围
对于一个分类模型,VC维等于一个最大数据集的大小,不管如何给定标号,都存在一个模型来对它及进行完美分类。VC维提供为什么一个模型好的理论依据,可以衡量训练误差和泛化误差之间的间隔,在深度学习中的使用是不常见的。
数据的复杂度有多个重要因素:样本个数、每个样本的元素个数、时间空间结构、多样性等。
模型容量需要匹配数据复杂度,否则可能导致欠拟合和过拟合,统计机器学习提供数学工具来衡量模型复杂度,实际中一般依靠观察训练误差和验证误差。

代码实现
# 通过多项式拟合来交互的探索模型选怎、欠拟合和过拟合的现象
import math
import numpy as np
import torch
from torch import nn
from d2l import torch as d2l

# 使用三阶多项式来生成训练数据和测试数据的标签

# 特征维度
max_degree =20
n_train,n_test=100,100
true_w=np.zeros(max_degree)
true_w[0:4] = np.array([5,1.2,-3.4,5.6])

features = np.random.normal(size=(n_train+n_test,1))
np.random.shuffle(features)
poly_features = np.power(features,np.arange(max_degree).reshape(1,-1))
for i in range(max_degree):
    poly_features[:,i] /= math.gamma(i+1)
labels = np.dot(poly_features,true_w)
labels += np.random.normal(scale=0.1,size
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值