机器学习理论基础—神经网络算法公式学习

机器学习理论基础—神经网络公式学习

M-P神经元

M-P神经元(一个用来模拟生物行为的数学模型):接收n个输入(通常是来自其他神经
元),并给各个输入赋予权重计算加权和,然后和自身特有的阈值进行比较 (作减法),最后经过激活函数(模拟“抑制"和“激活")处理得到输出(通常是给下一个神经元)
在这里插入图片描述

通过对公式形式的观察可以发现M-p神经元与线性回归模型之间有密切的联系。

单个M-P神经元:感知机(sgn[符号函数]作激活函数)、对数几率回归(sigmoid作激活函数)
多个M-P神经元:神经网络
在这里插入图片描述

感知机模型

感知机模型:激活函数为sgn(阶跃函数)的神经元(是一个用来分类的模型)
在这里插入图片描述
在这里插入图片描述
从几何的角度来说,感知机解决的是线性可分的数据集T,感知机的学习目标是求得能对数据集T完全正确划分的超平面。
n维空间的超平面(WtX+b=0)

  • 超平面方程不唯一
  • 法向量w垂直超平面
  • w和b唯一确定一个超平面
  • 法向量指向的一半空间为正空间,另一半为负空间

感知机的学习策略

感知机学习策略:随机初始化w,b,将全体训练样本代入模型找出误分类样本,假设此时误分类样本集合为M包含于T,对任意一个误分类样本(x,y)∈M来说,当wtx-θ≥0时,模型输出值为y=1,样本真实标记为y=0;反之,当wtx-θ< 0时,模型输出值为 = 0,样本真实标记为y = 1。综合两种情形可知,以下公式恒成立。
在这里插入图片描述

损失函数

所以若给定数据集T其损失函数可以定义为:
在这里插入图片描述

显然,此损失函数是非负的。如果没有误分类点,损失函数值是0。而且,误分类点越少,误分类点离超平面越近,损失函数值就越小。

之后极小化损失函数并对其进行优化。首先给定一个数据集
在这里插入图片描述
x的值属于实数空间,y的值属于0或1,在求参数w和θ的过程中要极小化损失函数的解
在这里插入图片描述
若将阈值θ看做是一个固定输入为-1的哑节点,即
在这里插入图片描述
可以将求解的问题简化为:
在这里插入图片描述

感知机学习算法

使用随机梯度下降的方法来进行实现

感知机学习算法:当误分类样本集合M固定时,那么可以求得损失函数L(w)的梯度为:
在这里插入图片描述

感知机的学习算法具体采用的是随机梯度下降法,也就是极小化过程中不是一次使M中所有误分类点的梯度下降,而是一次随机选取一个误分类点使其梯度下降。所以权重w的更新公式为:
在这里插入图片描述
其中n代表的是学习率

神经网络

由于像感知机这种单个神经元分类能力有限,只能分类线性可分的数据集,对于线性不可分的数据集则无能为力,但是多个神经元构成的神经网络能够分类线性不可分的数据集(西瓜书上异或问题的那个例子),且有理论证明(通用近似定理):只需一个包含足够多神经元的隐层,多层前馈网络(最经典的神经网络之一)就能以任意精度逼近任意复杂度的连续函数。因此,神经网络既能做回归,也能做分类,而且不需要复杂的特征工程。

多层前馈网络

多层前馈网络:每层神经元与下一层神经元全互连,神经元之间不存在同层连接,也不存在跨层连接。(隐层阈值rh,输出层國值θ)
在这里插入图片描述
将神经网络(记为NN)看作一个特征加工函数
在这里插入图片描述
(单输出)回归:后面接一个R’→R的神经元,例如:没有激活函数的神经元
分类:后面接一个R’→[0,1]的神经元,例如:激活函数为sigmoid函数的神经元。
在这里插入图片描述

因此神经网络可以用在分类与回归任务上,做分类时套用对数几率回归而做回归时需要套用的是,线性回归的模型。

在模型训练过程中,神经网络(NN)自动学习提取有用的特征,因此,机器学习向“全自动数据分析”又前进了一步。

假设多层前馈网络中的激活函数全为sigmoid函数,且当前要完成的任务为一个(多输出)回归任务,因此损失函数可以采用均方误差(分类任务则用交叉熵)该单个样本的均方误差(损失)为
在这里插入图片描述

BP误差逆传播算法

误差逆传播算法(BP算法):基于随机梯度下降的参数更新算法
在这里插入图片描述
其中只需推导出这个损失函数E关于参数w的一阶偏导数(梯度)即可(链式求导)。值得一提的是,由于NN(εc)通常是极其其复杂的非凸函数,不具备像凸函数这种良好的数学性质,因此随机梯度下降不能保证一定能走到全局最小值点,更多情况下走到的都是局部极小值点。
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

pytorch-MNIST测试实战

这里写目录标题 1. 为什么test2. 如何做test3. 什么时候做test4. 完整代码 1. 为什么test 如下图&#xff1a;上下两幅图中蓝色分别表示train的accuracy和loss&#xff0c;黄色表示test的accuracy和loss&#xff0c;如果单纯看train的accuracy和loss曲线就会认为模型已经train…

【优质书籍推荐】Vue.js+Node.js全栈开发实战

大家好&#xff0c;我是爱编程的喵喵。双985硕士毕业&#xff0c;现担任全栈工程师一职&#xff0c;热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。…

von Mises-Fisher Distribution (代码解析)

torch.distribution 中包含了很多概率分布的实现&#xff0c;本文首先通过均匀分布来说明 Distribution 的具体用法, 然后再解释 von Mises-Fisher 分布的实现, 其公式推导见 von Mises-Fisher Distribution. 1. torch.distribution.Distribution 以下是 Uniform 的源码: cl…

怎么使用JMeter进行性能测试?

一、简介 JMeter是Apache软件基金会下的一款开源的性能测试工具&#xff0c;完全由Java开发。它专注于对我们应用程序进行负载测试和性能测量&#xff0c;最初设计用于web应用程序&#xff0c;现在已经扩展到其他测试功能&#xff0c;比如&#xff1a;FTP、Database和LDAP等。…

Vue 3 项目构建与效率提升:vite-plugin-vue-setup-extend 插件应用指南

一、Vue3项目创建 前提是已安装Node.js&#xff08;点击跳转Node官网&#xff09; npm create vuelatest这一指令将会安装并执行 create-vue&#xff0c;它是 Vue 官方的项目脚手架工具。你将会看到一些诸如 TypeScript 和测试支持之类的可选功能提示&#xff1a; ✔ Projec…

跟着Carl大佬学leetcode之977 有序数组的平方

来点强调&#xff0c;刷题是按照代码随想录的顺序进行的&#xff0c;链接如下https://www.programmercarl.com/本系列是记录一些刷题心得和学习过程&#xff0c;就看到题目自己先上手试试&#xff0c;然后看程序员Carl大佬的解释&#xff0c;自己再敲一遍修修补补&#xff0c;练…

electron打包dist为可执行程序后记【electron-quick-start】

文章目录 目录 文章目录 前言 一、直接看效果 二、实现步骤 1.准备dist文件夹 2.NVM管理node版本 3.准备electron容器并npm run start 4.封装成可执行程序 1.手动下载electron对应版本的zip文件&#xff0c;解决打包缓慢问题 2.安装packager 3.配置打包命令执行内容…

【点云语义分割】弱监督点云语义分割自适应标签分布

Adaptive Annotation Distribution for Weakly Supervised Point Cloud Semantic Segmentation 摘要&#xff1a; 弱监督点云语义分割因其能够减轻对点云细粒度注释的严重依赖而备受关注。然而&#xff0c;在实际应用中&#xff0c;稀疏注释通常在点云中呈现出明显的非均匀分布…

Table表格(关于个人介绍与图片)

展开行&#xff1a; <el-table :data"gainData" :border"gainParentBorder" style"width: 100%"><el-table-column type"expand"><template #default"props"><div m"4"><h3>工作经…

封装个js分页插件

// 分页插件类 class PaginationPlugin {constructor(fetchDataURL, options {}) {this.fetchDataURL fetchDataURL;this.options {containerId: options.containerId || paginationContainer,dataSizeAttr: options.dataSizeAttr || toatalsize, // 修改为实际API返回的数据…

Flutter 的 showDialog 和 showCupertinoDialog 有什么区别?

我将我的 App 里用的 Flutter 升级到了 3.19&#xff0c;没想到&#xff0c;以前我用 showDialog 和 AlertDialog 组合创建的二次确认框&#xff0c;变得无敌难看了&#xff0c;大幅度增加了整个框的圆角和里面默认按钮的圆角。不得已&#xff0c;我必须修改一下&#xff0c;以…

51.基于SpringBoot + Vue实现的前后端分离-校园志愿者管理系统(项目 + 论文)

项目介绍 本站是一个B/S模式系统&#xff0c;采用SpringBoot Vue框架&#xff0c;MYSQL数据库设计开发&#xff0c;充分保证系统的稳定性。系统具有界面清晰、操作简单&#xff0c;功能齐全的特点&#xff0c;使得基于SpringBoot Vue技术的校园志愿者管理系统设计与实现管理工…

偏微分方程算法之二维初边值问题(紧交替方向隐格式)

目录 一、研究对象 二、理论推导 2.1 二维紧差分格式 2.2 紧交替方向格式 2.2.1 紧Peaceman-Rachford格式 2.2.2 紧D’Yakonov格式 2.2.3 紧Douglas格式 三、算例实现 四、结论 一、研究对象 继续以二维抛物型方程初边值问题为研究对象: 为了确保连续性,公式…

Vue.extend()和我的两米大砍刀

Vue.extends是什么&#xff1f; 一个全局API,用于注册并挂载组件。 传统的引用组件的方式是使用import直接引入&#xff0c;但是使用Vue.extends()也可以实现。 使用规则 <div id"mount-point"></div>// 创建构造器 var Profile Vue.extend({templat…

PyCharm,终端conda环境无法切换的问题(二个解决方案)

问题 PyCharm终端&#xff0c;环境切换无效&#xff0c;默认始终为base 解决一 Settings->Tools->Terminal->ShellPath&#xff0c;将powershell修改为cmd.exe 解决二 conda config --show在输出中找到 auto_activate_base 的行&#xff0c;发现被设置为 true&#x…

R语言中的execl数据转plink

文章目录 带出外部连接的方式添加列的方式从列表中选出对应的数据信息查看变量信息没有成功 带出外部连接的方式 点击这个黄色的按钮就可以弹出外部链接的方式 添加列的方式 创建一个数据框的方式 我们创建一个三行三列的数据方式 df <- data.frame(name c("Alice&…

嵌入式linux中利用QT控制蜂鸣器方法

大家好,今天给大家分享一下,如何控制开发板上的蜂鸣器。 第一:开发板原理图 从原理图中可以得出,当引脚输出低电平的时候,对应的蜂鸣器发出响声。 第二:QT代码详细实现 设置一个按钮,点击即可控制BEEP状态发生反转。 #ifndef MAINWINDOW_H #define MAINWINDOW_H#in…

【网络编程】TCP流套接字编程(TCP实现回显服务器)

一.TCP流套字节相关API. Socket(既能给客户端使用,也能给服务器使用) 构造方法 基本方法: ServerSocket(只能给服务器使用) 构造方法: 基本方法: 二.TCP实现回显服务器. 客户端代码示例: package Demo2;import java.io.IOException; import java.io.InputStream; import j…

【飞桨AI实战】人体姿态估计:零基础入门,从模型训练到应用开发

前言 本次分享将带领大家从 0 到 1 完成一个人体姿态估计任务&#xff0c;覆盖数据准备、模型训练、推理部署和应用开发的全流程&#xff0c;项目将采用以PaddlePaddle为核心的飞桨深度学习框架进行开发&#xff0c;并总结开发过程中踩过的一些坑&#xff0c;希望能为有类似项…

(C语言)sscanf 与 sprintf详解

目录 1.sprintf函数详解 2. sscanf函数详解 1.sprintf函数详解 头文件&#xff1a;stdio.h 作用&#xff1a;将格式化的数据写入字符串里&#xff0c;也就是将格式化的数据转变为字符串。 演示&#xff1a; #include <stdio.h> struct S {char name[10];int height;…