【机器学习】神经网络入门

news2025/7/12 11:47:37

神经网络

非线性假设

如果对于下图使用Logistics回归算法,如果只有x1和x2两个特征的时候,Logistics回归还是可以较好地处理的。它可以将x1和x2包含到多项式中
在这里插入图片描述
但是有很多问题所具有的特征远不止两个,甚至是上万个,如果我们想要包含很多特征,那Logistics回归的假设函数将会相当复杂。这些多项式的项数是以n^2的速度增长的。一方面运算量十分大,而且想要进行正则化调整也很难。 这么庞大的特征空间使得对特征的增删查改都十分困难,因此我们需要另寻出路。

比如,在计算机视觉中,判断一张图片是否是汽车,我们有很多图片:一些是汽车,而一些不是汽车,先取出汽车的局部特征看一下:
在这里插入图片描述
固定取出每张图片的两个固定位置的像素点pixel1和pixel2,将他们标记在以pixel1的灰阶强度为横轴、pixel2的灰阶强度为纵轴的表上,也就是将pixel1和pixel2的灰阶强度作为图片的两个特征。不断地往图表中添加数据,如下图:
在这里插入图片描述
这只是两个像素之间的关系的表格,我们应该将所有像素都加入进去,假设我们的图片都是50x50像素的(这样的图片相当“马赛克”是吧!),那么就总共有2500个像素点。两个像素点之间的关系需要在一个二维表上表示,那么一个拥有2500个像素点的图片则需要在一个2500维的表上标识!换言之,如果只是两个像素,那么一个汽车图片实例的向量为 [ p i x e l 1 p i x e l 2 ] \begin{bmatrix} pixel1\\ pixel2 \end{bmatrix} [pixel1pixel2]
而拥有2500个像素点的汽车实例的向量为
[ p i x e l 1 p i x e l 2 p i x e l 3 . . . p i x e l 2500 ] \begin{bmatrix} pixel1\\ pixel2\\ pixel3\\ ...\\ pixel2500 \end{bmatrix} pixel1pixel2pixel3...pixel2500
这里的例子一个像素还只是含有灰阶强度一个信息,这样的图片还只是黑白双色的,如果我们处理彩色图片,则需要采用RGB来表示一个像素, 那么一个像素将会携带红绿蓝三种信息。届时一张50x50的图片就拥有7500个特征!这么庞大的特征数量恐怕是传统的回归函数难以处理的

神经网络详解

神经网络的起源,是人类试图去模仿大脑的运作方式。首先我们来看一个神经元。
在这里插入图片描述
在一个神经元中,有若干个树突,树突用于向该神经元传递信息,以及有一个轴突,轴突则是该神经元向外(也就是其他神经元)传递信息,虽然只有一条轴突,但是轴突终端分出来的细支使得神经元可以同时向多个神经元传递信息。简而言之,神经元就是一个计算单元,接收了若干电信号后对电信号进行处理,并且将结果输出给其他神经元。

在一个神经网络里,我们将神经元的交互过程简化为一个很简单的模型,一个神经元就是一个逻辑单元。在神经网络中,激活函数就是我们曾经说的Logistic函数 g ( z ) = 1 / 1 + e − θ T x g(z)=1/1+e^{-\theta^Tx} g(z)=1/1+eθTx,对应的参数 θ j \theta_j θj有时候也会被称之为权重
在这里插入图片描述
神经网络是一组神经元连接起来的组合,x1,x2,x3向第二层的神经元输入数据,然后第二层神经元处理后再向第三层的输出,如下图所示。但是需要注意的是,一般x0会被我们人为的隐藏,因为x0是固定等于1的,它不会受上一层的影响,但是会影响到下一层的结果,为什么恒为1可以看前面的线性回归内容,也可以直接私信我。
在这里插入图片描述
一般第一层被称之为输入层,最后一层又被称之为输出层,中间的层级被称之为隐藏层,神经网络可能会有许多层级。在深入探讨神经网络之前,我们先规定一些记号,用于后续的展开:

  • a i ( j ) a_i^{(j)} ai(j)用于表示第j层第i个神经单元的激活项,表示该神经单元计算并输出的值
  • Θ ( j ) \Theta^{(j)} Θ(j)表示的是权重矩阵,表示的是从第j层到第j+1层的映射,

看起来有点难懂,不如直接看下面的:
看上面的图可以知道 a 1 ( 2 ) a_1^{(2)} a1(2)也就是第二层第一个激活值是和第一层的x1,x2,x3有关的,实际上他的式子如下
a 1 ( 2 ) = g ( z 1 ( 2 ) ) = g ( Θ 10 ( 1 ) x 0 + Θ 11 ( 1 ) x 1 + Θ 12 ( 1 ) x 2 + Θ 13 ( 1 ) x 3 ) a_1^{(2)} = g(z_1^{(2)})=g(\Theta_{10}^{(1)}x_0+\Theta_{11}^{(1)}x_1+\Theta_{12}^{(1)}x_2+\Theta_{13}^{(1)}x_3) a1(2)=g(z1(2))=g(Θ10(1)x0+Θ11(1)x1+Θ12(1)x2+Θ13(1)x3)
其中 Θ 10 ( 1 ) \Theta_{10}^{(1)} Θ10(1)表示的是从x0映射到第二层第一个节点 a 1 ( 2 ) a_1^{(2)} a1(2)的权重,函数g(z)是Logistic函数
照猫画虎我们还可以写出如下的内容:
a 2 ( 2 ) = g ( z 2 ( 2 ) ) = g ( Θ 20 ( 1 ) x 0 + Θ 21 ( 1 ) x 1 + Θ 22 ( 1 ) x 2 + Θ 23 ( 1 ) x 3 ) a_2^{(2)} = g(z_2^{(2)})=g(\Theta_{20}^{(1)}x_0+\Theta_{21}^{(1)}x_1+\Theta_{22}^{(1)}x_2+\Theta_{23}^{(1)}x_3) a2(2)=g(z2(2))=g(Θ20(1)x0+Θ21(1)x1+Θ22(1)x2+Θ23(1)x3) a 3 ( 2 ) = g ( z 3 ( 2 ) ) = g ( Θ 30 ( 1 ) x 0 + Θ 31 ( 1 ) x 1 + Θ 32 ( 1 ) x 2 + Θ 33 ( 1 ) x 3 ) a_3^{(2)} = g(z_3^{(2)})=g(\Theta_{30}^{(1)}x_0+\Theta_{31}^{(1)}x_1+\Theta_{32}^{(1)}x_2+\Theta_{33}^{(1)}x_3) a3(2)=g(z3(2))=g(Θ30(1)x0+Θ31(1)x1+Θ32(1)x2+Θ33(1)x3)

如果你学习过线性代数就知道,方程组和矩阵是可以相互转化的,我们将这个方程组中的参数 Θ \Theta Θ转化为矩阵形式就可以得到一个3行4列矩阵

Θ ( 1 ) = [ Θ 10 ( 1 ) Θ 11 ( 1 ) Θ 12 ( 2 ) Θ 13 ( 1 ) Θ 20 ( 1 ) Θ 21 ( 1 ) Θ 22 ( 2 ) Θ 23 ( 1 ) Θ 30 ( 1 ) Θ 31 ( 1 ) Θ 32 ( 2 ) Θ 33 ( 1 ) ] \Theta^{(1)} = \begin{bmatrix} \Theta_{10}^{(1)}& \Theta_{11}^{(1)} & \Theta_{12}^{(2)} &\Theta_{13}^{(1)}\\ \Theta_{20}^{(1)}& \Theta_{21}^{(1)} & \Theta_{22}^{(2)} &\Theta_{23}^{(1)}\\ \Theta_{30}^{(1)}& \Theta_{31}^{(1)} & \Theta_{32}^{(2)} &\Theta_{33}^{(1)}\\ \end{bmatrix} Θ(1)= Θ10(1)Θ20(1)Θ30(1)Θ11(1)Θ21(1)Θ31(1)Θ12(2)Θ22(2)Θ32(2)Θ13(1)Θ23(1)Θ33(1)
这个就是我们所说的权重矩阵

接下来我们讨论下神经网络的向量化。上面的方程组可以简写为 a 1 ( 2 ) = g ( z 1 ( 2 ) ) a_1^{(2)} = g(z_1^{(2)}) a1(2)=g(z1(2))等,因此我们可以将特征向量x定义为
x = [ x 0 x 1 x 2 x 3 ] x=\begin{bmatrix} x_0\\ x_1\\ x_2\\ x_3 \end{bmatrix} x= x0x1x2x3
将权重矩阵定义为
KaTeX parse error: Expected '}', got '\end' at position 63: …\ z_3^{(2)}\\ \̲e̲n̲d̲{bmatrix}
拥有了向量化的神经网络后,我们可以使用向量一次性处理大量数据,比如我想求出第二层节点 a ( 2 ) a^{(2)} a(2)的值,则使用 z ( 2 ) = Θ ( 1 ) x , a ( 2 ) = g ( z ( 2 ) ) z^{(2)}=\Theta^{(1)}x,a^{(2)}=g(z^{(2)}) z(2)=Θ(1)x,a(2)=g(z(2))

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

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

相关文章

MySQL数据库给表添加索引

说明:当数据库中的记录数过多时,查询速度会显著变慢。此时可以给表创建索引,提高查询速度。 一、创建索引前 我现在有一张表,有1000万条记录,根据username值,查询一条记录,测试下查询时间&…

赛宁网安助力智能网联汽车发展 | “饶派杯”XCTF车联网安全挑战赛圆满收官

​​ 2023年5月31日,“饶派杯”XCTF车联网安全挑战赛在江西省上饶市圆满落幕。本次大赛特邀国内21支精英战队参与比拼,参赛选手覆盖全国知名高校、自动驾驶汽车和科研院所等车联网安全人才。最终,经过9个小时激烈角逐,来自南京邮电…

chatgpt赋能python:Python自动更新技术的应用

Python自动更新技术的应用 Python是一款高效的编程语言,广泛应用于各种软件开发、数据分析及人工智能等领域。随着大数据和人工智能的快速发展,Python语言的应用也日益普及,更多的企业和个人开始使用Python编写自己的程序。而随着程序的使用…

上榜“网络安全企业科技能力百强”啦!

最新公布的《2023网络安全企业科技能力报告》显示,顶象在“2023网络安全企业科技能力百强”和“2023网络安全企业有效专利数量百强”等两个榜单中均处于前列。 《2023网络安全企业科技能力报告》由中关村网络安全与信息化产业联盟发布,旨在探究网络安全…

微信开发者工具公众号网页项目实现本地项目调试

背景 最近业务场景中有需要微信H5进行实现,需要网页授权,需要用户进行点击授权的操作,跳转一个微信公众号后台设置的授权域名下的网页后才能获取到code,其他网页授权步骤这里不进行展开,不想频繁的打包上传的服务器看实现效果,所以考虑从微信开发者工具中实现本地调试,搜索过相…

如何开发原生的 JavaScript 插件(知识点+写法)

一、前言 通过 "WWW" 原则我们来了解 JavaScript 插件这个东西 第一个 W "What" -- 是什么?什么是插件,我就不照搬书本上的抽象概念了,我个人简单理解就是,能方便实现某个功能的扩展工具.(下面我会通过简单的例子来帮助读者理解) 第二个 W "Why&q…

(9)基于发射器的调优

文章目录 前言 1 概述 2 调优值 3 用任务规划器设置 前言 你可以在飞行中使用你的遥控发射器进行广泛的参数调优。这是为那些无法使用自动调优功能的高级用户准备的,或者希望通过对每个参数的完全手动调优控制来进行微调。 1 概述 基于发射机的调优允许你在飞行…

scala内建控制结构

一、条件表达式 (一)语法格式 - if (条件) 值1 else 值2(二)执行情况 条件为真,结果是值1;条件为假,结果是值2。如果if和else的返回结果同为某种类型,那么条件表达式结果也是那种类…

Vue.js 中的 props 和 $emit 方法有什么关系?

Vue.js 中的 props 和 $emit 方法有什么关系? 在 Vue.js 中,props 和 $emit 方法是两个常用的概念。它们可以帮助开发者更方便地实现组件之间的通信。但是这两个概念有什么关系呢?本文将会详细介绍 Vue.js 中的 props 和 $emit 方法&#xf…

【LeetCode每日一题】——1475.商品折扣后的最终价格

文章目录 一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【题目提示】七【解题思路】八【时间频度】九【代码实现】十【提交结果】 一【题目类别】 栈 二【题目难度】 简单 三【题目编号】 1475.商品折扣后的最终价格 四【题目描述】 给你一…

【区块链 | EVM】深入理解学习EVM - 深入了解 Solidity:堆栈

探讨 EVM 堆栈机器,以及如何在堆栈中推入和弹出数据 原文链接: https://betterprogramming.pub/solidity-tutorial-all-about-stack-c1ec6070fe60探讨 EVM 堆栈机器,以及如何在堆栈中推入和弹出数据 图片来源:Iva Rajović on Unsplash 这是"深入Solidity数据存储位置…

A股月份效应 | Python量化A股市场魔咒,5穷6绝7翻身准确吗?| 邢不行

A股有很多广为流传的谚语,它们大多源于投资者对交易经验的总结和共识。 比如我们之前验证过的散户反买别墅靠海、跳空必回补等谚语。 今天我们要验证的,是五穷六绝七翻身这句谚语。 它的意思是A股在5月、6月可能会跌的很惨,到7月会开始反弹回…

浅谈倾斜摄影三维模型数据裁剪的应用场景

浅谈倾斜摄影三维模型数据裁剪的应用场景 倾斜摄影三维模型数据裁剪是将倾斜摄影三维模型数据中不需要的部分删除或隐藏的过程,可以提高数据处理效率和准确性。倾斜摄影三维模型数据裁剪广泛应用于建筑、城市规划、地质勘探、环境监测等领域。本文将介绍倾斜摄影三维…

基于Springboot+Vue的计算机房管理系统

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取项目下载方式🍅 一、项目背景介绍: 计算机房管理系统在现…

读取所在点的像素值

由于项目需求,需要用到开源的软件开发,就开始研究GDAL,这个开源库,目前来说,调用GDAL库,最方便的语言还是python ,简单记录下,用python语言做GDAL开发的一些东西吧。一个在开发中经常…

​浅谈Vue3响应式原理与源码解读

一. 了解几个概念 什么是响应式 在开始响应式原理与源码解析之前,需要先了解一下什么是响应式?首先明确一个概念:响应式是一个过程,它有两个参与方: 触发方:数据响应方:引用数据的函数 当数据发…

微信小程序原生开发功能合集十八:系统主题及自定义主题功能实现

本章实现系统主题监听及相应处理,包括暗黑色、亮色等。并实现自定义主题控制相关功能,可通过菜单进行主题的切换。   另外还提供小程序开发基础知识讲解课程,包括小程序开发基础知识、组件封装、常用接口组件使用及常用功能实现等内容,具体如下:    1. CSDN课程: ht…

VUE 实现滑块验证 ①

作者 : SYFStrive 博客首页 : HomePage 📜: 微信小程序 📌:个人社区(欢迎大佬们加入) 👉:社区链接🔗 📌:觉得文章不错可以点点关注 &#x1f4…

2023年6月DAMA-CDGP数据治理专家认证,来这里

DAMA认证为数据管理专业人士提供职业目标晋升规划,彰显了职业发展里程碑及发展阶梯定义,帮助数据管理从业人士获得企业数字化转型战略下的必备职业能力,促进开展工作实践应用及实际问题解决,形成企业所需的新数字经济下的核心职业…

Windows批处理文件倒计时且循环执行文件/程序

Windows批处理文件倒计时且循环执行文件/程序: 最近想循环测试下语音唤醒设备,所以需要用bat文件在Windows上一直循环播放指定的mp3文件,且设置了间隔时间,也就是倒计时时间,最后网上查了一堆之后整理了一个bat&#x…