Skip to content

Commit 4f761ed

Browse files
Auto-update blog content
1 parent cd4a372 commit 4f761ed

File tree

64 files changed

+23529
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

64 files changed

+23529
-0
lines changed
Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
---
2+
layout: post
3+
title: "hello算法笔记-02"
4+
date: 2025-09-22T23:41:02+0800
5+
description: "硬盘是 “仓库”,长期放所有东西(换季衣服、备用物品);内存是 “客厅桌子”,临时放你当前要用的东西(正在吃的零食、看的书);缓存是 “手边托盘”,放你 “马上要用到” 的小物件(比如手里正在剥的糖、翻书的书签),让你不用频繁起身去桌子 / 仓库拿,效率更高。"
6+
keywords: "hello算法笔记 02"
7+
categories: ['未分类']
8+
tags: ['算法', '笔记']
9+
artid: "151186046"
10+
arturl: "https://blog.csdn.net/AYheyheyhey/article/details/151186046"
11+
image:
12+
path: https://api.vvhan.com/api/bing?rand=sj&artid=151186046
13+
alt: "hello算法笔记-02"
14+
render_with_liquid: false
15+
featuredImage: https://bing.ee123.net/img/rand?artid=151186046
16+
featuredImagePreview: https://bing.ee123.net/img/rand?artid=151186046
17+
cover: https://bing.ee123.net/img/rand?artid=151186046
18+
image: https://bing.ee123.net/img/rand?artid=151186046
19+
img: https://bing.ee123.net/img/rand?artid=151186046
20+
---
21+
22+
23+
24+
# hello算法笔记 02
25+
26+
很久没更新算法学习,打算这个栏目至少要一周4更以上了,算法是一切的基础。虽说实际开发时要自己手敲的算法不是很多,模型什么都在,但至少面试什么的要能过,leetcode hot100 差不多都能写完。
27+
28+
## 1 数组与链表重点回顾
29+
30+
#### 重点回顾
31+
32+
* 数组和链表是两种基本的数据结构,分别代表数据在计算机内存中的两种存储方式:**连续空间存储和分散空间存储。**两者的特点呈现出互补的特性。
33+
* 数组支持随机访问、占用内存较少;但插入和删除元素效率低,且初始化后长度不可变。
34+
* 链表通过更改引用(指针)实现高效的节点插入与删除,且可以灵活调整长度;但节点访问效率低、占用内存较多。**常见的链表类型包括单向链表、环形链表、双向链表**
35+
* **列表是一种支持增删查改的元素有序集合,通常基于动态数组实现。**它保留了数组的优势,同时可以灵活调整长度。
36+
* 列表的出现大幅提高了数组的实用性,但可能导致部分内存空间浪费。
37+
* 程序运行时,**数据主要存储在内存中。****组可提供更高的内存空间效率,而链表则在内存使用上更加灵活。**
38+
* 缓存通过缓存行、预取机制以及空间局部性和时间局部性等数据加载机制,为 CPU 提供快速数据访问,显著提升程序的执行效率。
39+
* 由于**数组具有更高的缓存命中率,因此它通常比链表更高效**。在选择数据结构时,应根据具体需求和场景做出恰当选择。
40+
41+
## 2 队列底层实现
42+
43+
#### **【队列的底层逻辑是数组或者链表吗?】**
44+
45+
队列的底层实现可以是数组,也可以是链表,两种方式各有特点:
46+
47+
1. **基于数组的实现**
48+
49+
* 通常使用固定大小的数组或动态数组(如 Python 的 list)
50+
* 需要维护队头和队尾指针(索引)
51+
* 可能存在 **"假溢出" 问题**(数组未满但无法插入新元素),解决方法是使用循环队列
52+
* 随机访问效率高,但插入删除操作在队头时效率较低(需要移动元素)
53+
2. **基于链表的实现**
54+
55+
* 使用**单链表或双向链表**
56+
* 同样需要维护队头和队尾指针
57+
* 不存在固定大小限制,内存利用率更高
58+
* 插入删除操作效率高(只需调整指针),但随机访问效率低
59+
60+
在实际应用中,两种实现方式都很常见:
61+
62+
* 当队列大小可预测且需要高效随机访问时,数组实现更合适
63+
* 当队列大小不确定且频繁进行插入删除操作时,链表实现更有优势
64+
65+
许多编程语言的标准库队列实现会根据具体场景选择合适的底层结构,有些甚至会结合两者的优点进行优化。
66+
67+
## 3 硬盘、内存、缓存
68+
69+
#### 【硬盘是存放长期静态的文件,内存是动态的短期的,缓存是为运行当前文件实时加载的吗?】
70+
71+
你的理解基本准确,但需要更精准地补充细节,尤其是 “缓存” 的定位 —— 它并非仅为 “当前文件实时加载”,而是**多级存储体系中用于衔接速度差异、提升整体效率的 “高速缓冲层”**。下面从 “存储层级逻辑” 和 “三者核心差异” 两方面展开,帮你理清底层关系:
72+
73+
#### 一、先明确核心认知:三者是 “多级存储体系” 的不同层级
74+
75+
计算机设计的核心逻辑之一是 “**用速度换容量,用容量换成本**”—— 速度越快的存储,容量越小、成本越高。硬盘、内存、缓存(这里默认指 CPU 缓存,是最关键的缓存层级)正是按 “速度从慢到快、容量从大到小、成本从低到高” 排列的三级存储,职责是协同工作而非孤立存在:
76+
77+
1. **硬盘(长期存储层)**:负责 “永久保存” 数据,即使断电也不丢失,是所有数据的 “源头仓库”(比如你的文档、软件安装包、操作系统文件)。
78+
2. **内存(短期运行层)**:负责 “临时加载” 硬盘中需要当前运行的数据 / 程序(比如你打开的 Excel、正在播放的视频),因为硬盘速度太慢,无法直接支撑 CPU 的高速运算 ——CPU 要处理数据,必须先把硬盘里的内容 “搬到内存”,断电后内存数据会丢失。
79+
3. **缓存(高速缓冲层)**:负责 “衔接 CPU 与内存的速度差”——CPU 运算速度极快(每秒数十亿次),内存速度虽比硬盘快(约 100-1000 倍),但仍跟不上 CPU。因此缓存会把内存中 “CPU 最常访问的数据 / 指令”(比如循环代码、频繁使用的变量)提前加载进来,让 CPU 直接从缓存取数据,避免频繁等待内存,大幅提升效率。
80+
81+
#### 二、硬盘、内存、缓存的核心差异对比
82+
83+
为了更清晰区分,我们用表格总结关键维度:
84+
85+
| 对比维度 | 硬盘(HDD/SSD) | 内存(RAM) | 缓存(CPU Cache,如 L1/L2/L3) |
86+
| --- | --- | --- | --- |
87+
| **存储性质** | 永久性存储(断电数据不丢) | 临时性存储(断电数据丢失) | 超临时性存储(断电数据丢失) |
88+
| **核心作用** | 长期保存所有数据 / 程序(仓库) | 临时加载 “当前运行” 的数据 / 程序 | 缓存 “CPU 最常访问” 的数据 / 指令 |
89+
| **速度** | 最慢(HDD 约 100-200MB/s;SSD 约 1-5GB/s) | 较快(约 10-50GB/s) | 最快(约 100-1000GB/s,接近 CPU 速度) |
90+
| **容量** | 最大(通常 TB 级,如 1TB/2TB/4TB) | 中等(通常 GB 级,如 8GB/16GB/32GB) | 最小(通常 MB 级,如 L3 缓存 16MB/32MB) |
91+
| **成本** | 最低(每 GB 几分到几角钱) | 中等(每 GB 几元到十几元) | 最高(每 GB 几十到几百元) |
92+
| **访问逻辑** | 按 “文件系统路径” 访问(如 C:/ 文档 /xxx.doc) | 按 “内存地址” 直接访问(CPU 通过地址找数据) | 按 “局部性原理” 主动缓存(优先存 CPU 近期会用的数据) |
93+
94+
#### 三、补充 2 个关键误区修正
95+
96+
1. **“缓存仅为当前文件加载” 是片面的**
97+
缓存的核心逻辑是 “**局部性原理**”——CPU 访问数据时,通常会 “近期反复访问同一数据”(如循环变量)或 “访问相邻数据”(如数组)。因此缓存不仅加载 “当前文件”,还会根据访问规律,提前缓存 “可能即将用到的数据”(比如你正在编辑的文档,缓存会提前加载文档的下一段内容,而不只是当前显示的段落)。
98+
2. **“内存是动态的” 需要更精准理解**
99+
内存的 “动态” 体现在两方面:
100+
101+
* 数据动态替换:当你关闭一个程序(如 Excel),系统会释放它占用的内存,分配给新打开的程序(如浏览器);
102+
* 数据实时更新:内存中的数据会随程序运行实时修改(比如你在 Excel 中输入数字,内存中对应的单元格数据会立即更新),而硬盘中的数据需要主动 “保存” 才会更新(如按 Ctrl+S)。
103+
104+
#### 总结
105+
106+
简单来说,三者的关系像 “家庭仓库→客厅桌子→手边托盘”:
107+
108+
* 硬盘是 “仓库”,长期放所有东西(换季衣服、备用物品);
109+
* 内存是 “客厅桌子”,临时放你当前要用的东西(正在吃的零食、看的书);
110+
* 缓存是 “手边托盘”,放你 “马上要用到” 的小物件(比如手里正在剥的糖、翻书的书签),让你不用频繁起身去桌子 / 仓库拿,效率更高。
111+
112+
113+
Lines changed: 133 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,133 @@
1+
---
2+
layout: post
3+
title: "深度学习初探神经网络的基本结构"
4+
date: 2025-09-22T14:05:05+0800
5+
description: "人工神经网络的灵感来源于人类大脑的神经元结构。大脑通过神经元的连接和信号传递处理信息,而人工神经网络则用数学函数与矩阵运算模拟这一过程。神经元(Neuron):最小的计算单元,接收输入,经过加权求和与非线性变换后输出结果。神经网络(Neural Network):由大量神经元按照层次结构组合而成,形成输入层、隐藏层和输出层。输入层:接收数据。隐藏层:特征提取与非线性映射。输出层:生成结果。权重、偏置、激活函数:支撑计算的核心要素。"
6+
keywords: "enn一般分为四层:输入层、隐藏层、关联层和输出层。其输入层、隐藏层的连接类似于"
7+
categories: ['未分类']
8+
tags: ['神经网络', '深度学习', '人工智能']
9+
artid: "151797609"
10+
arturl: "https://blog.csdn.net/X2829352498/article/details/151797609"
11+
image:
12+
path: https://api.vvhan.com/api/bing?rand=sj&artid=151797609
13+
alt: "深度学习初探神经网络的基本结构"
14+
render_with_liquid: false
15+
featuredImage: https://bing.ee123.net/img/rand?artid=151797609
16+
featuredImagePreview: https://bing.ee123.net/img/rand?artid=151797609
17+
cover: https://bing.ee123.net/img/rand?artid=151797609
18+
image: https://bing.ee123.net/img/rand?artid=151797609
19+
img: https://bing.ee123.net/img/rand?artid=151797609
20+
---
21+
22+
23+
24+
# 深度学习初探:神经网络的基本结构
25+
26+
[![](https://csdnimg.cn/release/blogv2/dist/pc/img/activeVector.png)
27+
VibeCoding·九月创作之星挑战赛
28+
10w+人浏览
29+
2.2k人参与
30+
31+
![](https://csdnimg.cn/release/blogv2/dist/pc/img/arrowright-line-White.png)](https://activity.csdn.net/writing?id=10954)
32+
33+
在人工智能的浪潮中,**深度学习(Deep Learning)** 是近年来最火热的研究与应用方向。而支撑深度学习的核心就是——**人工神经网络(Artificial Neural Network, ANN)**。本文将带你初步了解神经网络的基本结构,帮助你快速入门。
34+
35+
---
36+
37+
### 一、什么是神经网络?
38+
39+
人工神经网络的灵感来源于**人类大脑的神经元结构**。大脑通过神经元的连接和信号传递处理信息,而人工神经网络则用数学函数与矩阵运算模拟这一过程。
40+
41+
* **神经元(Neuron)**:最小的计算单元,接收输入,经过加权求和与非线性变换后输出结果。
42+
* **神经网络(Neural Network)**:由大量神经元按照层次结构组合而成,形成输入层、隐藏层和输出层。
43+
44+
---
45+
46+
### 二、神经网络的基本结构
47+
48+
#### 1. 输入层(Input Layer)
49+
50+
* 接收数据的入口。
51+
* 输入数据可以是图像像素、文本向量、特征数据等。
52+
* 每个节点对应一个特征。
53+
例如,房价预测问题中,特征可能包括“面积、房龄、位置”。
54+
55+
---
56+
57+
#### 2. 隐藏层(Hidden Layer)
58+
59+
* 位于输入层与输出层之间,由多个神经元组成。
60+
* 每一层神经元都会将输入做加权求和,再经过 **激活函数(Activation Function)** 处理,增加非线性。
61+
* 深度学习的“深度”就是指隐藏层的层数。
62+
* 常见激活函数:
63+
64+
+ **ReLU**:ReLU(x)=max⁡(0,x)\text{ReLU}(x) = \max(0, x)ReLU(x)=max(0,x)
65+
+ **Sigmoid**:将结果映射到 [0,1][0,1][0,1]
66+
+ **Tanh**:映射到 [−1,1][-1,1][−1,1]
67+
68+
---
69+
70+
#### 3. 输出层(Output Layer)
71+
72+
* 产生最终预测结果。
73+
* 根据任务不同,输出形式也不同:
74+
75+
+ 回归问题:输出一个连续值
76+
+ 分类问题:输出多个类别概率(Softmax 函数常用)
77+
78+
---
79+
80+
#### 4. 权重与偏置(Weights & Bias)
81+
82+
* **权重(w)**:表示输入特征的重要程度,类似于线性方程中的系数。
83+
* **偏置(b)**:让模型有更大的灵活性,避免所有输入为零时输出固定为零。
84+
85+
公式:
86+
87+
z=w1x1+w2x2+...+wnxn+b
88+
z = w_1x_1 + w_2x_2 + ... + w_nx_n + b
89+
z=w1​x1​+w2​x2​+...+wn​xn​+b
90+
91+
---
92+
93+
#### 5. 前向传播(Forward Propagation)
94+
95+
输入数据依次通过各层神经元,逐层计算输出,直到得到预测结果。
96+
97+
---
98+
99+
#### 6. 反向传播(Backpropagation)
100+
101+
神经网络通过 **误差反向传播** 来更新参数。
102+
103+
* 计算预测结果与真实值之间的误差(损失函数)。
104+
* 将误差沿网络反向传播,更新权重与偏置。
105+
* 优化算法常用 **梯度下降(Gradient Descent)**
106+
107+
---
108+
109+
### 三、一个简单的例子
110+
111+
以二分类任务(如“是否点击广告”)为例:
112+
113+
1. **输入层**:用户特征(年龄、浏览时长、点击次数等)。
114+
2. **隐藏层**:多层神经元,通过非线性变换学习特征组合。
115+
3. **输出层**:使用 Sigmoid 输出概率(是否点击)。
116+
117+
最终,模型可以自动学习哪些特征对结果更重要,从而进行预测。
118+
119+
---
120+
121+
### 四、总结
122+
123+
神经网络的基本结构包括:
124+
125+
* **输入层**:接收数据。
126+
* **隐藏层**:特征提取与非线性映射。
127+
* **输出层**:生成结果。
128+
* **权重、偏置、激活函数**:支撑计算的核心要素。
129+
130+
理解了这些基础,才能更好地学习 CNN(卷积神经网络)、RNN(循环神经网络)、Transformer 等更复杂的深度学习模型。
131+
132+
133+

0 commit comments

Comments
 (0)