深度学习基础(二)-学习是怎么个回事

news2024/11/24 17:07:15

深度学习基础(一) 引入了一个 helloworld,提出了神经网络的简单关系,也就是一个基础公式

a(L) = Sigmoid( a(L-1)*W(L) + b(L))

a(L): 第L层神经元被激活之后 进行Sigmoid函数收敛 得到的值

b(L): 第L层神经元被激活阈值

W(L): 第L层神经元 与 第L-1层神经元之间的关系 权重

由于 神经元之间的关系 通过公式计算之后得到的值 会是一个很大的范围,

我们也无从知道,这个范围多大,总之很多种可能,为了方便操作,采用Sigmoid函数将 计算结果收敛到 0~1 这个范围

从网络第二层开始,每个神经元身上 都具备了n(前一层神经元个数,由于当前层的每个神经元与前一层 的n个神经元都会有关系)个W控制器,1个阈值开关

如此,整个网络就会有很多个 这样的 w b开关,如果这些开关能调试到一个合适的位置,那么整个网络从第一层接收输入的数据,就会吐出来一个不错的结果,比如上篇文章提到的手写体数字识别,得到一个相当不错的识别结果

关键的问题就是,如何调试这些开关,假如有十几二十多个开关,我们还能手动调一调,但 上文中提到的结构,网络有 4层, 784 x 16 x 16 x 10, 总共10000多个开关,这完全不是我们能处理的

神经网络 学习就是 调试这些开关参数了

这篇说文,我不会引入太多的图来说明,主要通过简单的数学逻辑引申到这个主题上来,基本上就是白话了,也没有复杂的公式

如何调试开关

不像我们解微分方程,线性矩阵运算,简单通过微分积分策略与向量方程求解,得到结果就完事了

通过微积分我们能做的那些事,计算机甚至比我们做得更好更高效

主要在于神经网络所阐述的学习逻辑是怎么个逻辑,怎么就能调试那么多的参数

我们在大一都学过 高等数学,想想为什么要求导,我们最开始学习的时候,是怎么引入导数这个概念的,

肯定不是一开始就记公式的,因为要研究一些非线问题,我们通过简单的高中数学无法解决的问题

以一元函数为例,汽车开始行驶 到行驶结束,求速度的问题,还记得那个 小三角变化量么,当时就是为了研究 自变量改变一点点,因变量的变化,引出了导数的概念,然后如何通过积分求面积,就是这样开始的

神经网络也一样,面对庞大的参数集要求解,直接使用公式是没可能的,那么也开始像最开始接触导数一样,从一点点的变化开始慢慢探究

在这里插入图片描述

上图就是前面提到的公式了,为了方便理解,引入了变量Z,Sigmoid就是对Z进行收敛

图中的复合多元函数求导也非常简单,用到的链式法则也很好理解,如果确实忘记的话简单百度一下也很容易恢复记忆

神经网络调试开关不是一蹴而就的,而是一点点慢慢调的,这个过程就有点像我们开始学习高等数学解题一样,通过求导慢慢探究,然后通过积分来求面积一样

我们假定神经网络有4层,第一层为输入层,所以第一层神经元 激活值可以认为是确定的

中间两层是通过第一层传递过来的

最后一层为输出层,也是通过中间两层传递输出来的

开始,神经网络给所有的开关随机了一个值作为初始值,当然了,这样网络输出的结果基本上不是我们期望的结果

那就从第一次输出的结果开始,我们能知道输出层与我们期望的结果 相差多少,假定我们是计算机,我们根据结果的偏差来调整我们最后一层神经元上绑定的开关 w,b

这里又不得不插入一些赘述,因为涉及到了结果评价问题,需要对输出结果是什么有直观的认识


输出结果其实是 通过输出层的 10个神经元反馈出来的

10个神经元,每个神经元 分别代表着 0,1,2,… 9 这10个罗马数字

每个神经元的激活值 为 0~1,看输出层这10个神经元,谁的 激活值最大,就表示谁代表的罗马数字就是最终的结果

如果 输入的手写体 是个3,那么我们希望神经网络输出的结果自然是3, 代表3的那个神经元的激活值应该最高为1, 其他的神经元激活值应该都为0

这样我们根据结果 判断,目前网络的开关设置下输出的结果与 我们期望得到的结果差别,通过网络最后一层能看到的直观结果就是这样了


继续回到调试开关上来

第一次随机开关设置,网络输出之后,我们发现 目标指代正确结果的那个神经元 激活值偏低,非目标神经元激活值偏高

我们当然就希望目标神经元 激活值高一些,非目标神经元 激活值 低一些

如果是这么简单,我们直接调试过来就好了

当然了,这个网络并非输出一种结果,另一组输入,比如手写2,期望输出 2罗马数字,对最后一层开关的调试方案又是一种情况

目前我们的关注点只在最后一层也就是输出层上

神经网络在最后一层上的开关调试,就是 根据各种输入得到的结果偏差,各自期望的调试方向 叠加到一起,形成一个最合适有效的调试方案,最终保障各自的输入都能尽可能的输出正确的结果

正因为,大家都需要调试开关,都有各自的输出诉求,就不能简单粗暴的设置了,需要慢慢商议,你进一点,他退一点,不合适了再反过来,如此,反复磨,反复商议,最终才能形成方案来


即使这样,我们也是尽最大可能调试最后一层网络开关而已,中间的两层神经元上也有很多开关,到此我们还未涉及到

码字来说明确实效率有点低下,马上要涉及的神经网络学习策略 放在放在下篇更文

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

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

相关文章

Android安卓中jni封装代码打包为aar

前文【Android安卓中jni与Java之间传递复杂的自定义数据结构】已经介绍jni编译c++代码且已经成功封装成java,但是c++是以源代码形式继承在app中,本文介绍如何将前述jni c++代码以隐藏源代码封装成aar的形式。 1、aar打包 1.1、新建module 按照流程 File -> New Module …

学习周报2.26

文章目录前言文献阅读摘要方法结果深度学习Encoder-Decoder(编码-解码)信息丢失的问题Attention机制总结前言 This week,I read an article about daily streamflow prediction.This study shows the results of an in-depth comparison between two di…

Oracle-RAC集群主机重启问题分析

问题背景: 在对一套两节点Oracle RAC19.18集群进行部署时,出现启动数据库实例就会出现主机出现重启的情况,检查发现主机重启是由于节点集群被驱逐导致​。 问题: 两节点Oracle RAC19.18集群,启动数据库实例会导致主机出现重启。 问题分析: 主机多次出现…

2023年第八周总周结 | 开学倒数第一周

为什么要做周总结? 1.避免跳相似的坑 2.客观了解上周学习进度并反思,制定可完成的下周规划 一、上周存在问题 发现自己反复犯同样问题,不想反思就不会意识到。总想以面带点的学习,实际上却在原地踏步。问题导向使用ChatGPT&#…

目标检测:DETR详解

1. 概述 DETR: End-to-End Object Detection with Transformers, DETR 是 Facebook 团队于 2020 年提出的基于 Transformer 的端到端目标检测,是Transformer在目标检测的开山之作 – DEtection TRansformer。 相比于传统的Faster-rcnn,yolo系列,DETR有以下几个优点:1).无需…

微信实时音视频通话数据流分析

一、实时音视频的架构 实时音视频通信架构主要包括P2P、SFU、MCU三种方式,其中点对点通信通常以P2P优先,P2P走不通的场景再借助于SFU/MCU。 P2P方式,终端之间点对点的相互收发数据流,音视频流不经过服务器; SFU是端侧…

scrapy下载图片

🐱 个人主页:莎萌玩家🙋‍♂️ 作者简介:全栈领域新星创作者、专注于全栈各领域技术,共同学习共同进步,一起加油呀!💫系列专栏:网络爬虫、WEB全栈开发📢 资料…

二叉树的后序遍历-java递归+非递归-力扣145双百方案

一、题目描述给你一棵二叉树的根节点 root ,返回其节点值的 后序遍历 。示例 1:输入:root [1,null,2,3]输出:[3,2,1]示例 2:输入:root []输出:[]示例 3:输入:root [1]…

使用jenkins实现自动化部署springboot应用

1. 前置准备 这里代码仓库使用gitlab。在介绍如何通过gitlab和jenkins进行自动化部署之前,需要先安装完成gitlab以及jenkins。两种程序的安装方式以及相关配置可以参看以下内容: linux中安装gitlab:linux安装极狐gitlab linux中安装jenki…

Objective-C description 自定义对象的打印格式/输出的字符串 类似于Java 中的 toString 方法

总目录 iOS开发笔记目录 从一无所知到入门 文章目录IntroNSObject 源码测试类截图测试代码输出Intro 在 Java 中,对于自定义类一般会重写集成自Object类的toString方法,这样在打印该类的对象时,打印出的字符串就是我们在 toString() 方法中返…

【Vue3源码】第六章 computed的实现

【Vue3源码】第六章 computed的实现 上一章节我们实现了 ref 及其它配套的isRef、unRef 和 proxyRefs API。这一章开始实现computed计算属性。 认识computed 接受一个 getter 函数,返回一个只读的响应式 ref 对象。该 ref 通过 .value 暴露 getter 函数的返回值。…

[架构之路-121]-《软考-系统架构设计师》-计算机体系结构 -3-汇编语言与ARM系统的初始化

第9章 计算机体系结构 第1-6节 参考前文第7节 ARM汇编语言7.1 程序框架(1)数据段Data初始化的数据: 初始的全局变量未初始化的数据:未初始化的全局变量堆heap:malloc的内存或数据栈stack:函数的局部变量&am…

ubuntu20系统+RobotiQ 2F-85夹爪+Ros+VMware配置

文章目录环境说明Ros配置Vmware虚拟机串口通信配置运行节点并调试有关问题解决办法rosdep相关缺少ros有关的库与pymodbus相关参考环境说明 环境说明系统版本Ubuntu 20.04.4Ros版本noetic主机形式VMware虚拟机夹爪型号RobotiQ 2F-85 Ros配置 新建ros工作空间并进行初始化 mkdir…

Nginx配置web服务器及部署反向代理

Nginx配置web服务器及部署反向代理配置web服务器location语法部署反向代理代理转发配置web服务器 项目部署到linux上的静态文件代理给Nginx处理。当访问服务器IP时,可以自动返回静态文件主页。 主配置文件中server块对应的次配置include /etc/nginx/conf.d/*.conf…

ESP-01S烧录MQTT固件连接阿里云

烧录MQTT固件 资源下载包 用到的所有烧录攻击和固件都放百度云链接了 提取码:qwlo 烧录固件 淘宝上10块钱左右一个CH340C下载烧录器ESP8266的就可以了。 连接好硬件打开ESPFlashDownloadTool_v3.6.2.2.exe软件(记得放到英文目录下不然可能打不开&a…

windows服务编程

文章目录前言方案一:服务程序方案二:后台程序对比windows服务编程windows服务控制附录 - 完整代码前言 在linux中,如果需要一个程序在后台持续提供服务,我们一般会使用守护进程。 守护进程(daemon)是生存期长的一种进程。它们常…

Canonical为所有支持的Ubuntu LTS系统发布了新的Linux内核更新

导读Canonical近日为所有支持的Ubuntu LTS系统发布了新的Linux内核更新,以解决总共19个安全漏洞。新的Ubuntu内核更新仅适用于长期支持的Ubuntu系统,包括Ubuntu 22.04 LTS(Jammy Jellyfish)、Ubuntu 20.04 LTS(Focal F…

需求:节目上传至MINIO后,使用mqtt进行上报

需求:节目上传至MINIO后,使用mqtt进行上报 环境准备 文件管理平台:首先需要使用minio搭建属于自己的对象存储(此步骤跳过) 通信方式:MQTT方式,客户端测试工具:MQTTX(ht…

AI - stable-diffusion(AI绘画)的搭建与使用

最近 AI 火的一塌糊涂,除了 ChatGPT 以外,AI 绘画领域也有很大的进步,以下几张图片都是 AI 绘制的,你能看出来么? 一、环境搭建 上面的效果图其实是使用了开源的 AI 绘画项目 stable-diffusion 绘制的,这是…

《MySQL学习》 表中随机取记录的方式

一.初始化测试表 创建表 words CREATE TABLE words ( id int(11) NOT NULL AUTO_INCREMENT, word varchar(64) DEFAULT NULL, PRIMARY KEY (id)) ENGINEInnoDB;插入测试数据 create procedure idata()begin declare i int; set i 0; while i<10000 do insert into words…