6-高维空间:机器如何面对越来越复杂的问题

声明

本文章基于哔哩哔哩付费课程《小白也能听懂的人工智能原理》。仅供学习记录、分享,严禁他用!!如有侵权,请联系删除

目录

一、知识引入

(一)二维输入数据

(二)数据特征维度

二、编程实验--接收2个输入的神经元

(一)观察数据

(二)编写预测模型

(三)前向传播

(四)反向传播+随机梯度下降


一、知识引入

(一)二维输入数据

      豆豆的毒性不仅和它的大小有关,也和它的颜色深浅有关系。这时就不能仅靠一个二维平面坐标系,就需要一个三维的空间坐标系。神经元也需要2个树突来接收输入。同时,过去的一元一次函数就需要变为-->二元一次函数,“颜色深浅”成为了另外一个“元”。

        二元一次函数在三维空间中,是一个平面。套上一层sigmoid激活函数后,就形成了曲面

        表示当大小和颜色深浅去某个值时,对有毒概率的预测结果。

        引入隐藏层神经元后,就可以扭曲三维空间中的面,让其组合出不同的曲面

(二)数据特征维度

        当问题数据特征越来越多,也就是说,我们采集豆豆的更多特征,eg:除了大小和颜色深浅以外,再加入一个外壳硬度作为输入数据时,我们就只能再添加一个维度去描述预测模型的图像。需要在四维空间作图。

        输入数据有多少种类别,也就是所谓的特征维度,也叫数据维度(数据特征维度)。实际上我们把豆豆的特征提取越多,也就是我们从更多维去观察问题,也就能更好地预测它的毒性

        当输入数据的维度越来越多时,权重参数也越来越多。一个一个地去编写它们的函数表达式未免有点麻烦和拖沓。

二、编程实验--接收2个输入的神经元

(一)观察数据

import numpy as np
import dataset
# 封装了绘图工具
import plot_utils# 获取豆豆数据
num = 100
# xs是一个二维数组,表示输入数据的2个特征维度
# ys仍然是一维数组,0和1,代表每个豆豆是否有毒,0表示无毒、1表示有毒
xs, ys = dataset.get_beans(num)# 绘制数据的散点图
plot_utils.show_scatter(xs, ys)

(二)编写预测模型

# 编写预测模型
# 因为有2个树突,所以输入和神经元之间有2个权重参数
w1 = 0.1
w2 = 0.1
b = 0.1

(三)前向传播

# 编写前向传播代码
# 豆豆大小数据,在所有的行上,把第0列切割下来形成一个新的数组
x1s = xs[:, 0]
# 豆豆颜色数据,在所有的行上,把第1列切割下来形成一个新的数组
x2s = xs[:, 1]# 前向传播
def forward_propagation(x1s, x2s):z = w1 * x1s + w2 * x2s + ba = 1 / (1 + np.exp(-z))return a# 同时画出豆豆的散点图和预测曲面
plot_utils.show_scatter_surface(xs, ys, forward_propgation)

(四)反向传播+随机梯度下降

for _ in range(5000):for i in range(num):x = xs[i]y = ys[i]x1 = x[0]x2 = x[1]a = forward_propagation(x1, x2)e = (y - a)**2deda = -2 * (y - a)dadz = a * (1 - a)dzdw1 = x1dzdw2 = x2dzdb = 1dedw1 = deda * dadz * dzdw1dedw2 = deda * dadz * dzdw2dedb = deda * dadz * dzdbalpha = 0.0.1w1 = w1 - alpha * dedw1w2 = w2 - alpha * dedw2b = b - alpha * dedbplot_utils.show_scatter_surface(xs, ys, forward_propgation)

        

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一级指针和二级指针

一级指针 形式:int a 2; int *p &a; 解释: int*p &a表示一级指针p指向变量a的值。此时一级指针p存放的是a的地址,*p解引用是a的值。 作用: c中随处可见。不多言。 二级指针 形式:int a 2; int *p &…

C语言calloc函数的特点,效率低。但是进行初始化操作

#define _CRT_SECURE_NO_WARNINGS 1 #include<stdlib.h> #include<string.h> #include<errno.h> #include<stdio.h> int main() { int *p (int *)calloc(10,sizeof(int)); //初始化&#xff0c;效率低&#xff0c;然而malloc函数相反&#xf…

Linux/Ubuntu/Debian的终端中和的区别

下边举例说明&#xff1a; “cd /home & wine ps.exe”和“cd /home && wine ps.exe”之间的区别在于命令在类 Unix shell 环境&#xff08;例如 Linux 或 macOS&#xff09;中执行的方式&#xff1a; ‘cd /home & wine ps.exe’: 在此命令中&#xff0c;“…

最细致最简单的 Arm 架构搭建 Harbor

更好的阅读体验&#xff1a;点这里 &#xff08; www.doubibiji.com &#xff09; ARM离线版本安装 官方提供了一个 arm 版本&#xff0c;但是好久都没更新了&#xff0c;地址&#xff1a;https://github.com/goharbor/harbor-arm 。 也不知道为什么不更新&#xff0c;我看…

数据机构-2

线性表 概念 顺序表 示例&#xff1a;创建一个存储学生信息的顺序表 表头&#xff08;Tlen总长度&#xff0c; Clen当前长度&#xff09; 函数 #include <seqlist.c> #include <stdio.h> #include <stdlib.h> #include "seqlist.h" #include &…

Auto-DataProcessing:一组让制作数据集变轻松的脚本

前言 最近跟同学参加了个比赛&#xff0c;我负责Object-Detection的技术实现&#xff0c;需要从网上扒大量的数据(主办方每种识别物就给了一张demo&#x1f923;)&#xff0c;发现数据准备是一个真的是一个非常重要但又耗时耗力的过程。对我来说&#xff0c;给我一类待识别的标…

sqlite简单的增删改查

1&#xff0c;插入数据 (INSERT): INSERT INTO table_name (column1, column2, column3, ...) VALUES (value1, value2, value3, ...); //示例&#xff1a; INSERT INTO employees (name, age, department) VALUES (John Doe, 30, Sales);2&#xff0c;查询数据 (SELECT): S…

路由器级联

目录 一、实现功能二、实现步骤2.1 接线步骤 三、效果3.1 常规连接3.2 路由器级联 一、实现功能 主路由器&#xff1a;可有WiFi功能&#xff0c;LAN口下接各设备&#xff0c;并接一个辅路由器辅路由器&#xff1a;开启WiFi功能&#xff0c;有线或无线下接各设备功能&#xff1…

学上一招,使用 telnet 调试邮件发送

文章目录 背景正常的debug日志报错的debug日志分析SMTP协议相关命令SMTP 命令扩展 SMTP 命令使用 telnet 测试 SMTP 通信 - 邮件调试小帮手!正常情况报错情况SMTP 响应码Java 报错信息参考🔊 背景:生产环境,在 K8s 中部署发送邮件的微服务(多实例),发现不同的 pod 发送邮…

一.Netedit的简要介绍

目录 一.Netedit的简要介绍 功能二:删除项(delete) 功能三:选择项(select) 功能四:移动项(move)

IDEA直接打包Docker镜像

以下为使用IDEA打包Docker镜像并推送到远程仓库&#xff08;使用Windows打包Docker镜像并推送到远程仓库&#xff09;教程 1 安装Docker Desktop 下载地址&#xff1a;https://www.docker.com/products/docker-desktop/ 安装成功后&#xff0c;可在cmd查看版本号 2 启动Do…

qt开发记录

文章目录 1、QT介绍2、信号和槽机制3、提升类4、播放媒体5、增加新的组件6、联合vscode开发 1、QT介绍 打开的主页面介绍&#xff0c;下面是一张新的工程的QT编辑栏&#xff0c;我这里大致分为三类&#xff0c;分别标注如下&#xff1a; 下面对这三个进行分别说明&#xff1a…

leetcode刷题(javaScript)——动态规划相关场景题总结

动态规划在 JavaScript 刷题中有一定的难度&#xff0c;但也是非常常见和重要的算法思想。动态规划通常适用于需要求解最优解、最大值、最小值等问题的场景&#xff0c;可以将复杂问题拆分成子问题&#xff0c;通过存储子问题的解来避免重复计算&#xff0c;从而提高效率。 理解…

v3-admin-vite 整合pont

需求 目前后端的Admin模板使用的是v3-admin-vite&#xff0c;需要整合pont接口&#xff0c;方便前后端统一一体化开发 安装PONT 按照官方的文档&#xff0c;将pont engine安装好&#xff0c;然后在项目根目录执行pont start。注意生成代码路径要修改一下&#xff0c;因为v3-a…

AGI之Humanoid Robot:Figure 01的介绍、核心技术、功能、应用案例之详细攻略

AGI之Humanoid Robot&#xff1a;Figure 01的介绍、核心技术、功能、应用案例之详细攻略 目录 Figure 01的介绍 1、特点 2、应用场景 Figure 01的主要功能 Figure 01的应用案例 1、传递苹果 2、搬箱子 3、拿盘子 Figure 01的介绍 2024年3月13日&#xff0c;Figure 01是…

带你深入了解数据库的事务

为什么要使用事务 日常开发中&#xff0c;很多操作&#xff0c;不是通过一个SQL就能完成的&#xff0c;往往需要多个SQL配合完成 当执行多个SQL操作的时候&#xff0c;如果中间出现了特殊的情况&#xff08;程序崩溃&#xff0c;系统奔溃&#xff0c;网络断开&#xff0c;主机…

java数据结构与算法刷题-----LeetCode1005. K 次取反后最大化的数组和(这就不是简单题)

java数据结构与算法刷题目录&#xff08;剑指Offer、LeetCode、ACM&#xff09;-----主目录-----持续更新(进不去说明我没写完)&#xff1a;https://blog.csdn.net/grd_java/article/details/123063846 卷来卷去&#xff0c;把简单题都卷成中等题了 文章目录 1. 排序后从小到大…

Spring Boot 实现程序的优雅退出

&#x1f3f7;️个人主页&#xff1a;牵着猫散步的鼠鼠 &#x1f3f7;️系列专栏&#xff1a;Java全栈-专栏 &#x1f3f7;️个人学习笔记&#xff0c;若有缺误&#xff0c;欢迎评论区指正 目录 前言 优雅停机是什么 SpringBoot如何实现优雅停机 合理杀死进程 法一&…

SQLiteC/C++接口详细介绍之sqlite3类(十八)

返回目录&#xff1a;SQLite—免费开源数据库系列文章目录 上一篇&#xff1a;SQLiteC/C接口详细介绍之sqlite3类&#xff08;十七&#xff09; 下一篇&#xff1a;SQLiteC/C接口详细介绍sqlite3_stmt类&#xff08;一&#xff09; ​ 56.sqlite3_update_hook 函数功能&am…

C++面试宝典第36题:骑士游历

题目 在国际象棋的棋盘上,使一个骑士遍历所有的格子一遍且仅一遍。对于任意给定的顶点,输出一条符合上述要求的路径。骑士的走法和中国象棋的马的走法一样,走日。 解析 本题是一个经典的回溯搜索问题,具体来说是求解国际象棋棋盘上骑士的遍历问题,也称为骑士巡游问题(Kni…