深度学习基础小鱼书笔记
深度学习基础Python小鱼书笔记部分感知机1.基础公式:w1x1w2x2θ w_1x_1w_2x_2\thetaw1​x1​w2​x2​θw_1 w_2 为权重x_1 x_2 为输入信号y 为输出信号输出0或1此时神经元被激活y的值为1反之y的值为0。其实就是模仿生物学中的神经元。w1x1w2x2b0 w_1x_1w_2x_2b0w1​x1​w2​x2​b0此式子加了个b偏置,实际上b就是(-theta),这样直接和0比较就能判断神经元是否被激活。2.与Numpy的联系 import numpy as np x np.array([0, 1]) #输入 w np.array([0.5, 0.5]) # 权重 b -0.7 #偏置 w*x array([ 0. , 0.5]) np.sum(w*x) 0.5 np.sum(w*x) b-0.19999999999999996 # 大约为-0.2由浮点小数造成的运算误差直接使用numpy中对于数组进行相乘相加直接实现或与非门的模仿3.各种门的实现#与门defAND(x1,x2):xnp.array([x1,x2])wnp.array([0.5,0.5])b-0.7tmpnp.sum(w*x)biftmp0:return0else:return1#与非门defNAND(x1,x2):xnp.array([x1,x2])wnp.array([-0.5,-0.5])# 仅权重和偏置与AND不同b0.7tmpnp.sum(w*x)biftmp0:return0else:return1#或门defOR(x1,x2):xnp.array([x1,x2])wnp.array([0.5,0.5])# 仅权重和偏置与AND不同b-0.2tmpnp.sum(w*x)biftmp0:return0else:return1Q:这个b的取值有点随机…为什么去0.70.2而不取0.60.3等等这些值不是唯一的存在一个连续的范围可以工作作者的选择是合理的在可行范围内选择了简单、对称的值对于教学目的使用这些值可以让读者看到三种门的相似性和差异性实际应用中这些参数通常通过训练如感知机学习算法得到而不是手动设置4.异或门(单层感知机局限性)仅当x1或x2中的一方为 1时才会输出1“异或”是拒绝其他的意思x1x2y000101011110————单层感知机是无法实现这个异或门的————感知机也有局限Why可以在坐标轴上面画一个有各种情况构成的(x1,x2)的四个点以及他们对应的y值三角形表示1圆形表示0看能不能在坐标轴上画一条直线把它们分开。如下图无法在坐标轴上面画出一条直线把三角形和圆形分开。解决方案改为非线性曲线用弯曲的曲线来分成两个区域————看下一节多层感知机可以由此实现非线性的功能5.多层感知机(异或门的实现以及感知机的高级功能)通过组合各个感知机能实现多种感知机包括异或门x1x2s1s2y00100101110111111010如上述表格正好满足异或门的要求#代码实现defXOR(x1,x2):s1NAND(x1,x2)s2OR(x1,x2)yAND(s1,s2)returny通过叠加层加深层感知机能进行更加灵活的表示。6.Summary感知机这一章结束看完这一章我掌握了或门与门非门异或门的逻辑含义并通过公式了解到如何在Python中实现感知机的功能。还有很重要的多层感知机可以表达出单层感知机达不到的非线性作用。Q不会构建多层感知机比如说那个异或门我就看的很懵是怎么构建出来的Q对于那几个基本的逻辑门还是需要再去熟悉一下。神经网络1.基本概况机器自动找到合适的权重​ 神经网络的一个重要性质就是从数据中自己学习的到合适的参数权重结构输入层————中间层————输出层​ 几层网络的判定输入层隐藏层输出层总数减一表示神经元有权重的数量2.激活函数感觉就像感知机的基础公式就是展现了实现原理激活函数计算过程把前面感知机加权计算过程的结果转为某个数a,然后再通过某个函数判断正负即可。————此类超过阈值就激活的函数被称之为阶跃函数此类函数就正好是感知机的应用。阶跃函数是激活函数的一种。其他激活函数sigmoid函数​h(x)11e−x h(x) \frac{1}{1 e^{-x}}h(x)1e−x1​根据图像我感觉他是相较于那么激烈的函数是比较平缓的。阶跃函数在使用时的 Numpy技巧1.缺陷使用单独值传递时不能传递数组会导致对于传入数据不太方便只能传递浮点数def step_function(x): if x 0: return 1 else: return 02.改进把Numpy数组传入然后将其中的数按照政府改为布尔类型再改为000111类型。从而实现Numpy数组的传入。 import numpy as np x np.array([-1.0, 1.0, 2.0]) x array([-1., 1., 2.]) y x 0 y array([False, True, True], dtypebool) y y.astype(np.int) y array([0, 1, 1]) #数组中大于0的转换为1小于0的转换为0。从而实现数组类型的转换Q:这个技巧具体有什么用我现在还看不太出来:之后再看我估计我就能看懂了函数的图型表示使用图形来表示上述阶跃函数。用到matplotlibimport numpy as np import matplotlib.pylab as plt def step_function(x): return np.array(x 0, dtypenp.int) x np.arange(-5.0, 5.0, 0.1) y step_function(x) plt.plot(x, y) plt.ylim(-0.1, 1.1) # 指定y轴的范围 plt.show() #np.arange(-5.0, 5.0, 0.1)在−5.0到5.0的范围内以0.1为单位生成NumPy数组[-5.0, -4.9, ..., 4.9].step_function()以该NumPy数组为参数对数组的各个元素执行阶跃函数运算并以数组形式返回运算结果。对于上述代码还是有点不太熟练。这个函数的理解生成了把阶跃函数转化为010101形式展示出-5–5的函数图像图像如下图sigmoid函数的代码实现def sigmoid(x): return 1 / (1 np.exp(-x)) x np.array([-1.0, 1.0, 2.0]) sigmoid(x) array([ 0.26894142, 0.73105858, 0.88079708]) #Q为什么能对于Numpy数组用展现出了它的广播功能只要注意与上面的阶跃函数不太一样罢了。对于广播功能怎么再这个函数中得到应用的两种函数的比较阶跃函数与sigmoid函数阶跃函数sigmoid函数连续变化性剧烈平缓返回值0和1多种小数等共同点两者的结构均是“输入小时输出接近0为0 随着输入增大输出向1靠近变成1”。也就是说当输入信号为重要信息时 阶跃函数和sigmoid函数都会输出较大的值当输入信号为不重要的信息时 两者都输出较小的值。还有一个共同点是不管输入信号有多小或者有多 大输出信号的值都在0到1之间。二者都是非线性函数线性函数是一条笔直的直线为了发挥叠加层所 带来的优势激活函数必须使用非线性函数如果是线性的还不如直接用函数表示因为线性是一条直线展示不出多层神经网络带来的优势ReLU函数含义ReLU函数在输入大于0时直接输出该值在输入小于等于0时输 出0def relu(x): return np.maximum(0, x)3.多维数组的运算多维数组通过np.dim()函数获得数组的维度通过__.shape函数获得数组的形状 注意返回的结果是个元组是因为一维数组的情况下也要返回和多维数组的情况下一致的结果通过__.shape[]函数获得数组某一行的形状 获得一个数字二维数组也被称作矩阵矩阵乘法矩阵的乘积是通过左边矩阵的行横向和右边矩阵的列纵 向以对应元素的方式相乘后再求和而得到的哦哦大致理解不过这种矩阵乘法的方式有点陌生需要再去记一记公式对应np.dot(A, B)np.dot()接收两个NumPy数组作为参数并返回数组的乘积。这里要注意的是np.dot(A, B)和np.dot(B, A)的 值可能不一样。和一般的运算或*等不同矩阵的乘积运算中操作数A、 B的顺序不同结果也会不同。顺序不同结果也有可能不同在运行矩阵乘法时保持一致注意要是矩阵的0维的列数和相乘矩阵的行数相等否则无法进行乘法会出现错误结果C矩阵也是由A和B共同决定的矩阵C的形状是由**矩阵A的行数和矩阵B的列数构成的**通过矩阵的乘积一次性完成计算的技巧在 实现的层面上可以说是非常重要的4.三层神经网络的实现主要是理解那个 w 的符号含义在后续写公式时很有用。例题如下一般地回归问题可以使用恒等函数二元分类问题可以使用sigmoid函数 多元分类问题可以使用softmax函数。溢出指的是在计算过程中出现了比精度更长的数导致程序对于数据的处理没有那么准确容易出现错误。比如说softmax函数中的分母就很容易出现内存溢出导致计算错误。softmax函数对于上式所说的内存溢出的问题可以利用它的一个特性来解决就是在指数上减去数组中最大的一个数。def softmax(a): c np.max(a) exp_a np.exp(a - c) # 溢出对策 sum_exp_a np.sum(exp_a) y exp_a / sum_exp_a return y特性输出总和是1./体现在将输出都转换为其所占的比例中。因此可以将其解释为概率。解释为概率又有什么用处呢在下一章会有不小的用处在MNIST数据集上实现数字的识别具体实践看我手写的文件夹其中我进行了对于MNIST数据集的实操演练。神经网络的学习概述就像我们人学习去识别数字文字等我们往往很容易去识别出什么数字是什么数字但是我们很难用程序去精确量化分析来区别它们之间的差别。所以机器学习来了神经网络的就是来解决这些问题的————通过一个完全没有人为干预的程序实现对于难以描述区别的图像进行区分与分类。正像我之前在做人脸识别小组作业的过程中学习到的三元组优化损失人脸识别也正如此先统一人脸正如书中所提出的正规化提高程序的鲁棒性。三元组优化损失我觉得正是训练机器学习的一个方法。“黑箱原理”不问过程直接出结果。端到端机器学习从输入数据到输出数据过程全程没有人工参与。关于对于数据的处理数据分为两类训练数据也叫做监督数据与测试数据 他们的作用不言而喻泛化能力是机器学习的最终目标就是让机器能够在最大准确率上能够识别出从未见过的数字等。判断结果对于某个数据集过于成功而对于其他数据集表现得很糟糕这种现象被称为过拟合会导致其泛化能力比较弱。根据以上分析我可以推断得出1.数据的收集也非常重要我觉得数据如果收集的“多样性”较高它的过拟合我觉得就不太可能出现。损失函数作为指标帮助神经网络寻找最佳权重一般使用均方误差和交叉熵误差这两种误差我还是不太清楚他们具体代表的表达式我不太理解即当前的 神经网络对监督数据在多大程度上不拟合在多大程度上不一致。Q欸如果误差越小表明其与数据拟合度越高也可能出现过拟合么如果给损失函数乘上一个负值就可以解释为“在多大程度上不坏” 即“性能有多好”均方误差​yk是表示神经网络的输出tk表示监督数据k表示数据的维数最后的结果为整数越小越说明它的拟合效果越好程序的结果越好。ONE—HOT表示对于输出正确的数据表示为1其他为0.def mean_squared_error(y, t): return 0.5 * np.sum((y-t)**2)交叉熵误差tk中只有正确解标签的索引为1其他均为0one-hot表示def cross_entropy_error(y, t): delta 1e-7 return -np.sum(t * np.log(y delta))计算总共的平均的损失​ 由于前面的误差仅仅是对于单个数据进行误差的计算而对于大量数据的平均损失计算去全部计算是不现实的。而如果我们去从庞杂的数据中去随机找寻一部分有这一部分的平均来近似表示总共的损失作为指标是解决问题的方法。np.random.choice(60000,10)#会从0到59999之间随机选择10个数字np.sum((y-t)**2)###### 交叉熵误差 [外链图片转存中...(img-6FVVSUJl-1772937414098)] tk中只有正确解标签的索引为1其他均为0one-hot表示 Python def cross_entropy_error(y, t): delta 1e-7 return -np.sum(t * np.log(y delta))计算总共的平均的损失​ 由于前面的误差仅仅是对于单个数据进行误差的计算而对于大量数据的平均损失计算去全部计算是不现实的。而如果我们去从庞杂的数据中去随机找寻一部分有这一部分的平均来近似表示总共的损失作为指标是解决问题的方法。np.random.choice(60000,10)#会从0到59999之间随机选择10个数字

相关新闻

大模型如何从“知识库”变成“通用助手”

大模型如何从“知识库”变成“通用助手”

近年来,大语言模型(Large Language Models, LLMs)的快速发展正在深刻改变人工智能的应用格局。从最初只能完成文本续写的“语言统计器”,到如今能够写代码、改作文、解数学题、批改试卷的“通用助手”,这一转变背后的关…

2026/5/17 10:27:00 阅读更多 →
网络钓鱼攻击持续有效的心理机制与技术演进研究

网络钓鱼攻击持续有效的心理机制与技术演进研究

摘要 尽管过去二十年间,网络安全技术在邮件网关过滤、端点检测与响应(EDR)以及用户意识培训等方面取得了显著进步,但网络钓鱼攻击依然是全球数据泄露的主要初始向量。2026年的最新数据显示,针对企业环境的钓鱼攻击成功…

2026/5/17 10:26:58 阅读更多 →
全铝装修南京靠谱企业

全铝装修南京靠谱企业

在南京寻找一家靠谱的全铝装修企业,您需要关注企业的专业性、材料品质、环保标准以及落地服务能力。在众多选择中,南京安伊家装修工程有限公司凭借其专注的领域、创新的理念和扎实的服务,成为值得信赖的优选。为什么选择安伊家?1.…

2026/5/17 5:56:26 阅读更多 →

最新新闻

2026高考志愿填报必备资料包(专科+本科通用)

2026高考志愿填报必备资料包(专科+本科通用)

📚 核心资料清单(均为百度网盘链接) - 最新高职高专专业目录:https://pan.baidu.com/s/1msj12egrVRe8hfjW5d8g2A 提取码:t15p - 张雪峰志愿填报合集①:https://pan.baidu.com/s/1T7sDQ8s3KUJH3q9EIwEv-…

2026/7/3 17:58:06 阅读更多 →
GESP2026年6月认证C++六级( 第三部分编程题(1、条形蛋糕))精讲

GESP2026年6月认证C++六级( 第三部分编程题(1、条形蛋糕))精讲

🍰 第一幕:蛋糕王国来了一个新店长1、暑假到了。蛋糕王国里,新开了一家蛋糕店。每天早晨,师傅都会做好一整条长长的蛋糕。(1)例如今天做了一条:════════════════ 长度&#xff…

2026/7/3 17:58:06 阅读更多 →
自动整列机PLC控制系统验证方案设计与ALCOA+实现

自动整列机PLC控制系统验证方案设计与ALCOA+实现

在制药行业,计算机化系统验证(CSV)是设备合规投入生产的必要环节。对于产线后端的自动整列机(或称自动码盘机、整列收瓶机)而言,其PLC控制系统的验证需要覆盖硬件确认、软件功能测试、数据完整性验证等多个…

2026/7/3 17:56:05 阅读更多 →
中外大模型能力对比分析

中外大模型能力对比分析

中外大模型能力差距:结构性成因的深度分析属性说明文档版本v1.0撰写日期2026-07-02文档类型技术战略分析分析视角机制解释,而非榜单罗列 摘要 「国产大模型不如国外」是一个过于粗糙的命题。截至 2026 年上半年,斯坦福 HAI《AI Index 2026》指…

2026/7/3 17:52:04 阅读更多 →
GHelper:如何用开源工具彻底解放你的华硕笔记本性能潜力?

GHelper:如何用开源工具彻底解放你的华硕笔记本性能潜力?

GHelper:如何用开源工具彻底解放你的华硕笔记本性能潜力? 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, Vivoboo…

2026/7/3 17:52:04 阅读更多 →
LENA-R8与PIC18LF45K40的嵌入式通信与精确定位方案

LENA-R8与PIC18LF45K40的嵌入式通信与精确定位方案

1. LENA-R8与PIC18LF45K40的硬件组合解析这个组合的核心价值在于将蜂窝通信与精确定位能力集成到嵌入式系统中。LENA-R8是u-blox推出的多模LTE Cat 1模块,支持14个LTE频段和4个GSM/GPRS频段,这意味着它能在全球绝大多数地区实现网络连接。其内置的u-blox…

2026/7/3 17:52:04 阅读更多 →

日新闻

Nginx防御TLS重协商攻击实战:从原理到配置与监控

Nginx防御TLS重协商攻击实战:从原理到配置与监控

1. 项目概述:为什么TLS重协商攻击至今仍需警惕十多年前的CVE-2011-1473,一个关于TLS/SSL协议重协商机制的漏洞,现在提起来还有必要吗?很多运维和开发朋友可能会觉得,这都老掉牙了,现代服务器和客户端不都默…

2026/7/3 0:03:59 阅读更多 →
华为防火墙双通道远程管理实战:Web与SSH配置详解

华为防火墙双通道远程管理实战:Web与SSH配置详解

1. 项目概述:为什么需要双通道远程管理防火墙?在任何一个稍具规模的企业网络里,防火墙都是那个默默守护在边界的关键角色。作为网络工程师,我们不可能每次都跑到机房,插上console线去配置它。远程管理能力,…

2026/7/3 0:03:59 阅读更多 →
AD74413R与PIC18F65K40的高精度工业数据采集方案

AD74413R与PIC18F65K40的高精度工业数据采集方案

1. 项目概述:AD74413R与PIC18F65K40的协同工作在工业自动化和精密测量领域,同时实现高精度模数转换(ADC)和数模转换(DAC)功能是许多复杂系统的核心需求。AD74413R作为一款四通道可配置模拟输入/输出器件,与PIC18F65K40微控制器的组合&#xf…

2026/7/3 0:05:59 阅读更多 →

周新闻

月新闻