您现在的位置是:首页 >学无止境 >统计学习方法第二章——感知机网站首页学无止境

统计学习方法第二章——感知机

樱木之 2023-06-12 16:00:03
简介统计学习方法第二章——感知机

x.1 前言

perceptron感知机是二分类的线性分类模型,输入为实例的特征向量,输出为实例类别(取-1,+1)。perceptron旨在求出将训练数据进行线性划分的分离超平面,属于classification判别模型,策略为基于误分类的损失函数,算法为梯度下降算法。

perceptron由Rosenblatt于1957年提出,是神经网络与SVM支持向量机的基础。

为了方便理解,下面每讲一个统计学习方法都是根据统计学习三要素进行切入点:模型,策略,算法。

x.2 模型

preceptron意在将正负类别分开,若特征空间R的维度为n,则分离超平面的维度空间为n-1。

请添加图片描述

请添加图片描述

x.3 策略

首先定义N-1维超平面wx+b=0。

请添加图片描述

定义x_0到超平面的距离。

请添加图片描述

写出所有误分类点到超平面的距离。

请添加图片描述

得到损失函数为2.4中所示:

请添加图片描述

x.4 算法

perceptron模型中的未知参数为w和b,为了计算得到w和b,即求解最小化Loss损失函数的参数w和b

请添加图片描述

我们使用梯度下降算法来更新参数。

batch gradient descent一次性使用所有训练集进行梯度计算和参数更新,但是计算量大。

stochastic gradient descent(SGD)随机选取一个误分类点对w,b进行参数更新。

于是综合上面的方法诞生出mini-batch gradient descent随机选取小批量个误分类点对w,b进行参数更新。

请添加图片描述

x.4.1 SGD和BGD和miniBGD区别

在PyTorch框架中,SGD代表随机梯度下降法,与批量梯度下降法(Batch Gradient Descent)是不同的。

在批量梯度下降法中,我们使用整个训练集计算梯度并更新模型参数。而在随机梯度下降法中,每次仅随机选择一个样本计算梯度并更新参数。随机梯度下降法通常具有更快的收敛速度,但由于每个样本的梯度估计都是不准确的,因此可能会导致噪声较大的更新。

PyTorch中的SGD优化器是一种基于随机梯度下降的优化算法。它不同于Batch Gradient Descent,因为它每次只计算一个样本的梯度。但是,为了减少噪声和提高稳定性,通常会在计算梯度时选择一小批样本(即mini-batch),然后对这些样本的梯度进行平均,最后更新模型参数。

下面是一个简单的PyTorch代码示例,演示如何使用SGD优化器进行训练:

import torch
import torch.optim as optim

# 定义模型
model = torch.nn.Linear(10, 1)

# 定义损失函数
criterion = torch.nn.MSELoss()

# 定义优化器
optimizer = optim.SGD(model.parameters(), lr=0.01)

# 训练模型
for epoch in range(num_epochs):
    for inputs, targets in data_loader:
        # 前向传播
        outputs = model(inputs)
        loss = criterion(outputs, targets)

        # 反向传播并更新参数
        optimizer.zero_grad()
        loss.backward()
        optimizer.step()

在这个示例中,我们使用SGD优化器来优化一个线性模型,并在训练循环中使用mini-batch。在每个迭代中,我们随机从数据集中选择一个mini-batch,计算损失和梯度,并更新模型参数。

x.5 算法收敛性

当训练数据集线性可分的时候,perceptron是收敛的。perceptron算法存在许多解,这些解依赖于初值的选择迭代过程中误分类点的选择顺序

x.6 感知机学习算法的对偶形式

了解即可,即误分类点被误分类n次,则乘以次数n用于更新参数w,b。

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。