4.感知机

感知机

​ 给定输入 x x x,权重 w w w,和偏移 b b b,感知机输出:
KaTeX parse error: Unknown column alignment: o at position 16: \begin{array} o̲ =\sigma(<w,x>+…
在这里插入图片描述

或者是二分类:-1或1
Expected node of symbol group type, but got node of type cr

伪代码

在这里插入图片描述

y i y_i yi表示真实类,与预测类相乘小于等于0,则说明不相等,预测错了,则更新模型。

​ 等价于使用批量大小为1的梯度下降

使用的损失函数

l ( y , x , w ) = m a x ( 0 , − y < w , x > ) l(y,x,w)=max(0,-y<w,x>) l(y,x,w)=max(0,y<w,x>)

​ 如果分类正确,则 − y < w , x > -y<w,x> y<w,x>小于0,则损失为0,即if语句不成立。

​ 如果分类错误,则有梯度,需要计算梯度,这里的 w , x w,x w,x是增广过的,含有b,未增广应该为 < w , x > + b <w,x>+b <w,x>+b

在这里插入图片描述

​ 每出现一只狗(红色),则朝下推一些,每出现一只猫(蓝色),则朝上推一些

收敛定理

​ 感知机是一个很简单的

假设

  • 数据在半径 r r r

  • 存在余量 ρ \rho ρ分类两类

    y ( x T w + b ) ≥ ρ y(x^Tw+b)\ge\rho y(xTw+b)ρ

对于 ∣ ∣ w ∣ ∣ 2 + b 2 ≤ 1 , ||w||^2+b^2\le 1, ∣∣w2+b21,感知机保证在 r 2 + 1 ρ 2 \frac{r^2+1}{\rho^2} ρ2r2+1步后收敛

XOR问题

​ 感知机不能拟合XOR函数,它只能产生线性分割面,导致第一次AI寒冬

在这里插入图片描述

多层感知机

XOR问题

在这里插入图片描述

​ 使用两个感知机,做两次,则变为了多层

单隐藏层

在这里插入图片描述

单分类

输入 x ∈ R n x\in \R^n xRn

隐藏层 W 1 ∈ R m × n , b 1 ∈ R m W_1\in \R^{m\times n},b_1\in\R ^m W1Rm×n,b1Rm

输出层 w 2 ∈ R m , b 2 ∈ R w_2\in \R^m,b_2\in \R w2Rm,b2R(单分类,只输出一个)

假设有m个隐藏层,
h = σ ( W 1 x + b 1 ) o = w 2 T h + b 2 h=\sigma(W_1x+b_1)\\ o=w_2^Th+b_2 h=σ(W1x+b1)o=w2Th+b2
σ \sigma σ是按元素的激活函数(非线性的)

如果激活函数是线性的,假设是本身,即 σ ( x ) = x \sigma(x)=x σ(x)=x


h = W 1 x + b 1 o = w 2 T W 1 x + b ′ h=W_1x+b_1\\ o=w_2^TW_1x+b' h=W1x+b1o=w2TW1x+b
输出仍然是一个线性函数,依旧等价于一个单层的感知机

Sigmoid激活函数

将输入投影到(0,1),速率变化比较好,非零中心化的输出会使得其后一层的神经元的输入发生偏置偏移(BiasShift,并进一步使得梯度下降的收敛速度变慢.
s i g m o i d ( x ) = 1 1 + e x p ( − x ) sigmoid(x)=\frac{1}{1+exp(-x)} sigmoid(x)=1+exp(x)1

Tanh激活函数

将输入投影到(-1,1),
t a n h ( x ) = e x − e − x e x + e − x = 2 × s i g m o i d ( 2 x ) − 1 tanh(x)=\frac{e^x-e^{-x}}{e^x+e^{-x}}=2\times sigmoid(2x)-1 tanh(x)=ex+exexex=2×sigmoid(2x)1
在这里插入图片描述

ReLU激活函数

ReLU:rectified linear unit
R e L U ( x ) = m a x ( x , 0 ) ReLU(x)=max(x,0) ReLU(x)=max(x,0)
在这里插入图片描述

多类分类


y 1 , y 2 , ⋯   , y k = s o f t m a x ( o 1 , o 2 , ⋯   , o k ) y_1,y_2,\cdots,y_k=softmax(o_1,o_2,\cdots,o_k) y1,y2,,yk=softmax(o1,o2,,ok)
输入 x ∈ R n x\in \R^n xRn

隐藏层 W 1 ∈ R m × n , b 1 ∈ R m W_1\in \R^{m\times n},b_1\in\R ^m W1Rm×n,b1Rm

输出层 w 2 ∈ R m × k , b 2 ∈ R k w_2\in \R^{m\times k},b_2\in \R^k w2Rm×k,b2Rk(k分类,输出k个)

假设有m个隐藏层,
h = σ ( W 1 x + b 1 ) o = w 2 T h + b 2 y = s o f t m a x ( o ) h=\sigma(W_1x+b_1)\\ o=w_2^Th+b_2\\ y=softmax(o) h=σ(W1x+b1)o=w2Th+b2y=softmax(o)
σ \sigma σ是按元素的激活函数(非线性的)

多隐藏层

h 1 = σ ( W 1 x + b 1 ) h 2 = σ ( W 2 x + b 2 ) h 3 = σ ( W 3 x + b 3 ) o = W 4 h 3 + b 4 h_1=\sigma(W_1x+b_1)\\ h_2=\sigma(W_2x+b_2)\\ h_3=\sigma(W_3x+b_3)\\ o = W_4h_3+b_4 h1=σ(W1x+b1)h2=σ(W2x+b2)h3=σ(W3x+b3)o=W4h3+b4

超参数:

  • 隐藏层数
  • 每层隐藏层的大小

在这里插入图片描述

代码实现

import torch
from torch import nn
from d2l import torch as d2l
import util

d2l.use_svg_display()  # 使用svg来显示图片
batch_size = 256
train_iter, test_iter = d2l.load_data_fashion_mnist(batch_size)

# 输入的维度,输出的维度,隐藏层的个数在输入和输出的维度之间
num_inputs, num_outputs, num_hiddens = 784, 10, 256

# randn初始为随机的(输入维度,输出维度,需要更新,则需要梯度)
W1 = nn.Parameter(torch.randn(num_inputs, num_hiddens, requires_grad=True))
b1 = nn.Parameter(torch.zeros(num_hiddens, requires_grad=True))

W2 = nn.Parameter(torch.randn(num_hiddens, num_outputs, requires_grad=True))
b2 = nn.Parameter(torch.zeros(num_outputs, requires_grad=True))

params = [W1, b1, W2, b2]  # 两层


def relu(X):
    a = torch.zeros_like(X)
    return torch.max(X, a)


def net(X):
    X = X.reshape((-1, num_inputs))
    H = relu(X @ W1 + b1)  # @是矩阵乘法
    return (H @ W2 + b2)


loss = nn.CrossEntropyLoss()

num_epochs, lr = 10, 0.1
updater = torch.optim.SGD(params, lr=lr)
util.train_ch3(net, train_iter, test_iter, loss, num_epochs, updater)
d2l.plt.show()

'''简洁实现'''
net = nn.Sequential(nn.Flatten(), nn.Linear(num_inputs, 256), nn.ReLU(), nn.Linear(256, num_outputs))


def init_weights(m):
    if type(m) == nn.Linear:
        nn.init.normal_(m.weight, std=0.01)


net.apply(init_weights)

batch_size, lr, num_epochs = 256, 0.1, 10
loss = nn.CrossEntropyLoss()
trainer = torch.optim.SGD(net.parameters(), lr=lr)

train_iter, test_iter = d2l.load_data_fashion_mnist(batch_size)
util.train_ch3(net, train_iter, test_iter, loss, num_epochs, updater)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/793458.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【异常】JDK21报错NoSuchFieldError: Class com.sun.tools.javac.tree.JCTree$JCImport does not have member fie

【异常】JDK21报错NoSuchFieldError: Class com.sun.tools.javac.tree.JCTree$JCImport does not have member fie java: java.lang.NoSuchFieldError: Class com.sun.tools.javac.tree.JCTree$JCImport does not have member field com.sun.tools.javac.tree.JCTree qualid …

鸿蒙开发:Universal Keystore Kit(密钥管理服务)【HMAC(C/C++)】

HMAC(C/C) HMAC是密钥相关的哈希运算消息认证码&#xff08;Hash-based Message Authentication Code&#xff09;&#xff0c;是一种基于Hash函数和密钥进行消息认证的方法。 在CMake脚本中链接相关动态库 target_link_libraries(entry PUBLIC libhuks_ndk.z.so)开发步骤 生…

Windows netstat命令详解,Windows查看网络连接

「作者简介」&#xff1a;冬奥会网络安全中国代表队&#xff0c;CSDN Top100&#xff0c;就职奇安信多年&#xff0c;以实战工作为基础著作 《网络安全自学教程》&#xff0c;适合基础薄弱的同学系统化的学习网络安全&#xff0c;用最短的时间掌握最核心的技术。 netstat 常用来…

某客户管理系统Oracle RAC节点异常重启问题详细分析记录

一、故障概述 某日10:58分左右客户管理系统数据库节点1所有实例异常重启&#xff0c;重启后业务恢复正常。经过分析发现&#xff0c;此次实例异常重启的是数据库节点1。 二、故障原因分析 1、数据库日志分析 从节点1的数据库日志来看&#xff0c;10:58:49的时候数据库进程开始…

20240711编译友善之臂的NanoPC-T6开发板的Buildroot

20240711编译友善之臂的NanoPC-T6开发板的Buildroot 2024/7/11 21:02 百度&#xff1a;nanopc t6 wiki https://wiki.friendlyelec.com/wiki/index.php/NanoPC-T6/zh NanoPC-T6/zh 4.4 安装系统 4.4.1 下载固件 4.4.1.1 官方固件 访问此处的下载地址下载固件文件 (位于网盘的&q…

每日刷题(二分图,二分查找,dfs搜索)

目录 1.P3853 [TJOI2007] 路标设置 2.P1129 [ZJOI2007] 矩阵游戏 3.P1330 封锁阳光大学 4.Trees 5.P1141 01迷宫 1.P3853 [TJOI2007] 路标设置 P3853 [TJOI2007] 路标设置 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 先求出每个路标之间的距离&#xff0c;再二分查找每…

妙笔生词智能写歌词软件:科技赋能艺术还是冲淡原味?

在当今数字化的时代&#xff0c;科技的触角延伸至艺术创作的各个领域&#xff0c;妙笔生词智能写歌词软件便是其中一个引人瞩目的产物。然而&#xff0c;它的出现引发了一场关于科技与艺术关系的深刻思考&#xff1a;究竟是为艺术创作赋予了新的能量&#xff0c;还是在不经意间…

【密码学】哈希函数与加密算法的关系

一、哈希函数的定义 哈希函数&#xff08;Hash Function&#xff09;&#xff0c;也被称为散列函数或杂凑函数&#xff0c; 是一种将任意长度的输入数据&#xff08;通常称为“预映射”或“消息”&#xff09;转换为固定长度输出&#xff08;通常称为“哈希值”、“散列值”、“…

软链接node_modules

公司项目很多微应用的子项目公用同一套模板&#xff0c;也就会使用同一个node_modules 1.先创建3个同样的项目,并安装一个其中的一个node_modules给他丢到外边 2.win r -------> cmd --------> ctrlshift enter(已管理员身份打开cmd) 3.在窗口分别执行以下代码…

医学王者刊!影响因子自创刊只增不减,3区跃升1区,国人发文占比6成!

【SciencePub学术】今天给大家推荐的是一本医学领域的SCI&#xff0c;是1本颇富潜力的国产期刊。影响因子自创刊以来就逐年上涨&#xff0c;凭借自己的努力从中科院3区跃迁至中科院1区&#xff0c;据说很多人已经靠信息差吃上了这本期刊的红利&#xff0c;接下来给大家解析一下…

卷积是如何计算的

使用代码&#xff0c;看卷积是如何计算的。 torch.nn torch.nn.functional srtide 的用法&#xff0c;代表卷积核的步幅 import torch import torch.nn.functional as F # 这个是输入的一个二维矩阵 input torch.tensor([[1,2,0,3,1],[0,1,2,3,1],[1,2,1,0,0],[5,2,3,1,1],…

SpringBoot相关

SpringBoot 1. what springboot也是spring公司开发的一款框架。为了简化spring项目的初始化搭建的。 spring项目搭建的缺点&#xff1a; 配置麻烦依赖繁多tomcat启动慢 2 .springboot的特点(why) 自动配置 springboot的自动配置是一个运行时(更准确地说&#xff0c;是应用程…

【学术会议征稿】第三届人工智能与智能信息处理国际学术会议(AIIIP 2024)

第三届人工智能与智能信息处理国际学术会议&#xff08;AIIIP 2024&#xff09; 2024 3rd International Conference on Artificial Intelligence and Intelligent Information Processing 第三届人工智能与智能信息处理国际学术会议&#xff08;AIIIP 2024&#xff09;将于…

SAP 物料批量执行MD02代码分享

通常我们在运行MRP的时候要么就是跑MD01整个工厂层级的,要么就是单个物料层级的MRP用MD02去单个物料去执行。 HANA后有了MRPLIVE,可以支持多物料的运行MRP,但是无法控制MRP的运行参数,根据采购类型跑出对应的单据,F跑出的采购申请,E跑出的是计划订单。 需求是要可以批量运…

网上下载的视频怎么转成mp4格式?教你一招轻松解决

网上拥有许多的视频资源&#xff0c;动漫&#xff0c;短视频&#xff0c;影视等等都层出不穷&#xff0c;很多小伙伴都会把一些视频进行下载下来&#xff0c;不过下载下来的视频都不是MP4格式的&#xff0c;在兼容性方面会比较的麻烦&#xff0c;会有播放器不支持的情况&#x…

SpringBoot新手快速入门系列教程十:基于Docker Compose,部署一个简单的项目

前述&#xff1a; 本篇教程将略过很多docker下载环境配置的基础步骤&#xff0c;如果您对docker不太熟悉请参考我的上一个教程&#xff1a;SpringBoot新手快速入门系列教程九&#xff1a;基于docker容器&#xff0c;部署一个简单的项目 使用 Docker Compose 支持部署 Docker 项…

Elon Musk开源Grok

转载自&#xff1a;AILab基地 早在6天前&#xff0c;马斯克就发文称xAI将开源Grok 图片 13小时前&#xff0c;马斯克开源了旗下公司X的Grok训练模型&#xff0c;并喊话OpenAI&#xff0c;你名字里的Open到底在哪里 图片 下面是xai-org的GitHub开源地址[https://github.com/x…

shein测试开发会问些啥?

&#x1f3c6;本文收录于《CSDN问答解惑-》专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收藏&…

【大模型搭建】部署Ollama,pull失败,手动构建方案

Ollama 是一个专注于简化大规模机器学习模型开发的框架。它提供了一系列工具来帮助开发者轻松地定义、训练和部署大型语言模型。 优点&#xff1a; • 提供了简洁的API&#xff0c;易于上手。 • 支持多种硬件加速选项&#xff0c;如GPU和TPU。 • 内置了许多预训练模型&#x…

常见点云处理总结汇总

点云处理是一系列操作和技术&#xff0c;用于分析和处理三维点云数据&#xff0c;以提取有用的信息并生成可视化结果。以下是常见的点云处理方法及其简要说明&#xff1a; 1. 点云预处理 滤波&#xff1a;去除噪声和无效点&#xff0c;如使用统计滤波、半径滤波等。下采样&a…