神经网络(深度学习,计算机视觉,得分函数,损失函数,前向传播,反向传播,激活函数)
目录
一、神经网络简介
二、深度学习要解决的问题
三、深度学习的应用
四、计算机视觉
五、计算机视觉面临的挑战
六、得分函数
七、损失函数
八、前向传播
九、反向传播
十、神经元的个数对结果的影响
十一、正则化与激活函数
一、神经网络简介
神经网络是一种有监督的机器学习算法,神经网络当成一种特征提取的方法,神经网络追求是什么样的的权重参数适合当前任务。

二、深度学习要解决的问题
机器学习流程:数据获取,特征工程,建立模型,评估与应用。最重要的是特征工程,前面学了那么多算法,归根到底,模型都是根据特征来进行训练。
特征工程的作用:
数据特征决定了模型的上限。
预处理和特征提取是最核心的。
算法和参数决定了如何去逼近这个上限。
机器学习问题:人工选择数据,人工选择特征,人工选择算法,人工选择结果。(说白了就是实现了数学公式)
深度学习,神经网络:解决了特征工程的问题
对于文本,图像数据去提取特征难,放在深度学习,神经网络里,就很好解决。
可以把深度学习,神经网络当作一个黑盒子,它能自动的去提取特征(它认为的最合适的特特征)它是真正有学习过程的,它可以真正的去学习什么样的特征是最合适的,有了特征,当成输入+线性回归、逻辑回归、SVM等等都行。
三、深度学习的应用
最常见、最广泛的应用是计算机视觉(人脸识别等)、自然语言处理(ChatGpt)。
那么是否也存在缺点呢?看如下图

随着数据规模的提升,计算量太大,参数多,速度慢,比如手机端人脸识别,会出现识别延时的现象。
提一下数据生成:对于庞大的训练数据,数值数据可以采用一些数学工具包生成,对于图像数据可以对图像进行翻转、镜面变换、平移等等,容易得到。
四、计算机视觉
最经典的图像分类任务。我们看看在计算机里图像是怎么表示的吧。
例如:一张300*100*3的猫咪图像 300:High 100:wight 3:三个颜色通道RGB
它是由一个一个像素点组成的,每个像素点的值0~255,值越大颜色越浅。它被表示为三维数组的形式。
用数值形式表示如:
五、计算机视觉面临的挑战
拍摄图像有照射角度,形状改变,部分遮蔽,背景混入的现象。
机器学习的常规套路:
收集数据并给定标签
训练一个分类器
测试评估
我们用KNN算法来做图像分类任务
K近邻算法:算法流程
1. 计算以知类别数据集中的所有点与当前的距离
2. 按照距离依次排序
3. 选取与前点距离最小的K个点
4. 确定前K个点所在类别的概率
5. 返回前K个点出现的频率最高的类别作为当前点预测分类
数据集:CIFAR-10数据库,10类标签,5000个训练数据,10000个测试数据,大小为32*32*3
用KNN来进行图像分类
距离的选择:L1 distance : (像素点对应相减)
图像距离计算方式:
一个栗子:

测试结果:部分还可以,没有分类对的图像,问题出现在哪里???
为什么K近邻算法不能用图像分类:
我们关注的是主体(主要成分),而背景主导是一个最大的问题,那么如何才能让机器学习到那些是重要的成分呢?
六、得分函数
线性函数(得分函数)
从输入-->输出的映射


七、损失函数
假设分三类:cat,dog,ship
计算方法:

决策边界,多维数据,多组权重参数构成了决策边界
如何衡量分类结果呢?
上图所示:结果的得分值有着明显的差异,我们需要明确的指导模型表示当前效果有多好或是有多坏!!!
引入损失函数:
其中:表示错误类别得分,
表示正确类别的得分,
表示容忍程度,即正确类别的得分至少比错误类别高1
例如有三个测试样本:
| 正确类别 | ||||
| 预测类别得分 | (样本1)猫 | (样本2)车 | (样本3)蛙 | |
| cat | 3.2 | 1.3 | 2.2 | |
| car | 5.1 | 4.9 | 2.5 | |
| frog | -1.7 | 2.0 | -3.1 | |
则损失值:
同理:
由损失值可以看出样本2是分类正确的
如果损失函数的值相同,那么意味着两个模型一样吗??
假设:
输入数据:
模型A:
模型B:
得到:
一样吗??显然是不一样的,可以看出来模型A只是利用了第一个参数,而模型B均等利用4个参数,B显然更好,那么怎么去区分这两个模型呢??或者说怎么去让模型A变得平滑,让它不那么极端呢??
答案是正则化。即加入正则化惩罚项。
即:
正则化惩罚项:
目的:神经网络过于强大,几乎90%的神经网络都会过拟合,不要让它太复杂,过拟合的模型是没用的。
softmax分类器:
现在啊,我们得到是一个输入的得分值,损失函数也是基于得分值的损失。但是直接给我们一个概率值岂不是更好!!!那么如何把一个得分值转化成一个概率值呢?
即sigmoid函数:

归一化:
计算损失值:
| cat | 3.2 | ----> exp | 24.5 | ---------> normalize | 0.13 |
| car | 5.1 | 164.0 | 0.87 | ||
| frog | -1.7 | 0.18 | 0.00 | ||
| 得分 | 放大 | 归一化 | 概率 |
八、前向传播
前向传播:一步一步的往前走,得到概率值,损失值

前向传播很好理解。
经过前向传播得到是损失值,但是怎么更新(参数,权重)模型呢??
这就交给反向传播了。
九、反向传播
经过前面的学习我们知道在做线性回归时,我们让目标函数
即损失函数最小化
经过求解梯度,更新参数theta
那么放在神经网络也是用梯度下降的方法,具体是怎么样实现的呢?
举一个例子:

如上所示:计算梯度需要逐层计算(链式法则)
可以一个一个计算,也可以一大块一大块计算
十、神经网络架构细节

层次结构:4层
神经元:9
全连接:每一层都与下一层全部连接
我们看到中间的箭头,实际是有箭头的吗???哈哈哈哈,并不是,中间就是权重参数矩阵,输入层输入两个特征,经过W1矩阵变换到5个特征,怎么变得呢??黑盒子!!!然后经过W2变换成4个特征,最后输出。
非线性变化:之前我们提到过神经网络是一层一层的,那么:
为啥呢??即在每一层后面都加有非线性变换,可以联想到之前的将得分值转化为概率值与之类似。

其基本结构:
继续堆叠一层:
神经网络的强大之处在于,用更多的参数来拟合复杂的数据
参数多到百万级都是小儿科,但是参数越多越好吗??
十、神经元的个数对结果的影响
并不是哦!!!过满则亏。
大家想一下,增加一个一个神经元九就了一组参数。
还是那句话,神经网络非常容易过拟合!!!!!!
十一、正则化与激活函数
正则化的作用:
惩罚力度对结果影响
防止过拟合
激活函数:
非常重要的一部分
常用的激活函数(Sigmoid,Relu,Tanh)非线性变换(把得分值转换为概率值)

激活函数的对比
sigmoid:

我们看到当数值偏大的时候,比如x=6时,求导后值几乎为零,梯度消失,如果向后传播, 对后面的影响几乎没有,所以这是存在限制的。
当今更多使用Relu这个激活函数:

求导值不变。
十二、神经网络解决过拟合的方法
数据预处理,标准化
参数初始化,通常我们都使用随机策略来进行参数初始化
正则化
DROP—OUT(自损八百)
思想:让效果消弱

即在某次正反向传播中,每一层随机杀死一部分神经元,不让参与。相当于一个比例:30%,每次让30%的神经元不参与训练。
相关文章:
神经网络(深度学习,计算机视觉,得分函数,损失函数,前向传播,反向传播,激活函数)
目录 一、神经网络简介 二、深度学习要解决的问题 三、深度学习的应用 四、计算机视觉 五、计算机视觉面临的挑战 六、得分函数 七、损失函数 八、前向传播 九、反向传播 十、神经元的个数对结果的影响 十一、正则化与激活函数 一、神经网络简介 神经网络是一种有监督…...
Tomcat的Host Manager页面403的原因和解决办法
目录 背景 原因: 解决方案 背景 一直报错 403 Access Denied You are not authorized to view this page.By default the Host Manager is only accessible from a browser running on the same machine as Tomcat. If you wish to modify this restriction, youll need to…...
零基础学华为ip认证难吗?华为认证费用多少?
零基础学华为ip认证难吗? 首先,零基础的学习者可以通过系统的学习,逐步掌握网络基础知识和技能。可以通过阅读教材、参加培训课程、进行实践操作等方式,不断提升自己的知识和技能水平。同时,学习者还可以利用华为提供的…...
[C语言]——内存函数
目录 一.memcpy使用和模拟实现(内存拷贝) 二.memmove 使用和模拟实现 三.memset 函数的使用(内存设置) 四.memcmp 函数的使用 C语言中规定: memcpy拷贝的就是不重叠的内存memmove拷贝的就是重叠的内存但是在VS202…...
QGIS编译(跨平台编译)056:PDAL编译(Windows、Linux、MacOS环境下编译)
点击查看专栏目录 文章目录 1、PDAL介绍2、PDAL下载3、Windows下编译4、linux下编译5、MacOS下编译1、PDAL介绍 PDAL(Point Data Abstraction Library)是一个开源的地理空间数据处理库,它专注于点云数据的获取、处理和分析。PDAL 提供了丰富的工具和库,用于处理激光扫描仪、…...
计算机三级——网络技术(综合题第二题)
路由器工作模式 用户模式 当通过Console或Telnet方式登录到路由器时,只要输入的密码正确,路由器就直接进入了用户模式。在该模式下,系统提示符为一个尖括号(>)。如果用户以前为路由器输入过名称,则该名称将会显示在尖指号的前…...
Python 深度学习第二版(GPT 重译)(二)
四、入门神经网络:分类和回归 本章涵盖 您的第一个真实世界机器学习工作流示例 处理矢量数据上的分类问题 处理矢量数据上的连续回归问题 本章旨在帮助您开始使用神经网络解决实际问题。您将巩固从第二章和第三章中获得的知识,并将所学应用于三个新…...
【Redis】Redis常见原理和数据结构
Redis 什么是redis redis是一款基于内存的k-v数据结构的非关系型数据库,读写速度非常快,常用于缓存,消息队列、分布式锁等场景。 redis的数据类型 string:字符串 缓存对象,分布式ID,token,se…...
3个Tips,用“AI”开启新生活
相信最近,很多朋友们都回归到了忙碌的生活节奏中。生活模式的切换,或多或少会带来身体或情绪状况的起伏。新技术正在为人们生活的方方面面带来便利。3个小Tips或许能让你也从新技术中获益,从身到心,用“AI”开启新生活。 关”A…...
【ROS | OpenCV】在ROS中实现多版本OpenCV、cv_bridge共存:安装与配置指南
在 Ubuntu 20.04 中,ROS Noetic 默认安装的 OpenCV 版本为 4.2.0。如果您需要确认系统中已安装的 OpenCV 版本,可以使用以下命令: sudo find / -iname "*opencv*"然而,许多开源算法都是基于 OpenCV 3 编写的࿰…...
Docker容器化技术(docker-compose示例:部署discuz论坛和wordpress博客,使用adminer管理数据库)
安装docker-compose [rootservice ~]# systemctl stop firewalld [rootservice ~]# setenforce 0 [rootservice ~]# systemctl start docker[rootservice ~]# wget https://github.com/docker/compose/releases/download/v2.5.0/docker-compose-linux-x86_64创建目录 [rootse…...
微分学<6>——Taylor公式
索引 Taylor公式Taylor公式的定性分析定理6.1 Taylor公式(Peano余项) Taylor公式的定量分析定理6.2 Taylor公式(Lagrange余项) Taylor公式 Taylor公式的定性分析 定理6.1 Taylor公式(Peano余项) 若函数 f ( x ) f\left ( x \right ) f(x)在 x 0 x_{0} x0处的 n n n阶导数均…...
检索增强生成(RAG)应用的构建:LangChain与LlamaIndex的比较与选择
对于我要做RAG应用,我应该使用两者中的哪一个。或者说还是都使用? 在人工智能领域,检索增强生成(RAG)应用正变得越来越受欢迎,因为它们能够结合大型语言模型(LLMs)的自然语言处理能力…...
免费PDF转换和编辑工具 PDFgear 2.1.4
PDFgear是一款功能强大的 PDF 阅读及转换软件。 它支持多种文件格式的转换和编辑,同时还提供了丰富的功能模块,如签名、表单填写等,方便用户进行多样化的操作。 该软件界面简洁美观,操作简单易懂,适合不同层次的用户…...
uniapp,导航栏(切换项)有多项,溢出采取左滑右滑的形式展示
一、实现效果 当有多项的导航,或者说切换项,超出页面的宽度,我们采取可滑动的方式比较好一些!并且在页面右边加个遮罩,模拟最右边有渐变效果! 二、实现代码 html代码: <!-- 头部导航栏 --…...
计算机网络面经-什么是IPv4和IPv6?
前言 Internet协议(IP)是为连接到Internet网络的每个设备分配的数字地址。它类似于电话号码,是一种独特的数字组合,允许用户与他人通信。IP地址主要有两个主要功能。首先,有了IP,用户能够在Internet上被识别…...
彻底讲透:如何写sql能够有效的使用到复合索引?
在MySQL中,有效的使用复合索引需要确保查询条件按照索引定义的列顺序进行。以下是一个具体的例子: 假设我们有一个sales表,它有四个字段:customer_id、product_category、sale_date和amount。为了优化包含这些字段查询的性能&…...
在Spring Boot中如何处理跨域请求(CORS)?
什么是跨域? 跨域(Cross-Origin Resource Sharing,CORS)是一种机制,它允许在 Web 页面上运行的脚本能够请求从不同源(域名、协议或端口)的资源。在浏览器安全策略中,有一条称为同源…...
好就业三种专业#信息安全#云计算#网络工程
一、信息安全专业 根据2021年网络安全宣传周白皮书的观察结果,网络安全产业对于人才的需求正以高速增长的趋势呈现,当前网络安全行业存在着巨大的人才缺口,平均供求比例约为1:2。这一现象导致了资深人才的储备不足,并且新人才的培…...
electron-builder打包
打包配置: "build": {"appId": "cc11001100.electron.example-001", // 程序包名"copyright": "CC11001100", // 版权相关信息"productName": "example-001", // 安装包文件名"direct…...
大数据学习栈记——Neo4j的安装与使用
本文介绍图数据库Neofj的安装与使用,操作系统:Ubuntu24.04,Neofj版本:2025.04.0。 Apt安装 Neofj可以进行官网安装:Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...
8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂
蛋白质结合剂(如抗体、抑制肽)在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上,高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术,但这类方法普遍面临资源消耗巨大、研发周期冗长…...
uniapp手机号一键登录保姆级教程(包含前端和后端)
目录 前置条件创建uniapp项目并关联uniClound云空间开启一键登录模块并开通一键登录服务编写云函数并上传部署获取手机号流程(第一种) 前端直接调用云函数获取手机号(第三种)后台调用云函数获取手机号 错误码常见问题 前置条件 手机安装有sim卡手机开启…...
Web中间件--tomcat学习
Web中间件–tomcat Java虚拟机详解 什么是JAVA虚拟机 Java虚拟机是一个抽象的计算机,它可以执行Java字节码。Java虚拟机是Java平台的一部分,Java平台由Java语言、Java API和Java虚拟机组成。Java虚拟机的主要作用是将Java字节码转换为机器代码&#x…...
[大语言模型]在个人电脑上部署ollama 并进行管理,最后配置AI程序开发助手.
ollama官网: 下载 https://ollama.com/ 安装 查看可以使用的模型 https://ollama.com/search 例如 https://ollama.com/library/deepseek-r1/tags # deepseek-r1:7bollama pull deepseek-r1:7b改token数量为409622 16384 ollama命令说明 ollama serve #:…...
群晖NAS如何在虚拟机创建飞牛NAS
套件中心下载安装Virtual Machine Manager 创建虚拟机 配置虚拟机 飞牛官网下载 https://iso.liveupdate.fnnas.com/x86_64/trim/fnos-0.9.2-863.iso 群晖NAS如何在虚拟机创建飞牛NAS - 个人信息分享...
Scrapy-Redis分布式爬虫架构的可扩展性与容错性增强:基于微服务与容器化的解决方案
在大数据时代,海量数据的采集与处理成为企业和研究机构获取信息的关键环节。Scrapy-Redis作为一种经典的分布式爬虫架构,在处理大规模数据抓取任务时展现出强大的能力。然而,随着业务规模的不断扩大和数据抓取需求的日益复杂,传统…...
tomcat指定使用的jdk版本
说明 有时候需要对tomcat配置指定的jdk版本号,此时,我们可以通过以下方式进行配置 设置方式 找到tomcat的bin目录中的setclasspath.bat。如果是linux系统则是setclasspath.sh set JAVA_HOMEC:\Program Files\Java\jdk8 set JRE_HOMEC:\Program Files…...
macOS 终端智能代理检测
🧠 终端智能代理检测:自动判断是否需要设置代理访问 GitHub 在开发中,使用 GitHub 是非常常见的需求。但有时候我们会发现某些命令失败、插件无法更新,例如: fatal: unable to access https://github.com/ohmyzsh/oh…...
算法—栈系列
一:删除字符串中的所有相邻重复项 class Solution { public:string removeDuplicates(string s) {stack<char> st;for(int i 0; i < s.size(); i){char target s[i];if(!st.empty() && target st.top())st.pop();elsest.push(s[i]);}string ret…...
