Skip to content

Commit 44248bc

Browse files
📝 更新机器学习文档,增加平方根求解示例和损失计算说明
- 在机器学习文档中新增了平方根求解的示例代码,展示了机器学习的基本原理和梯度下降的过程。 - 更新了线性回归文档中的损失计算部分,详细解释了均方误差的定义和计算方法,提升了文档的清晰度和可读性。
1 parent c3b6297 commit 44248bc

File tree

2 files changed

+73
-9
lines changed

2 files changed

+73
-9
lines changed

docs/docs/机器学习/index.md

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,76 @@
1+
<!--
2+
* @Author: jiangyangcreate [email protected]
3+
* @Date: 2025-03-27 17:13:15
4+
* @LastEditors: jiangyangcreate [email protected]
5+
* @LastEditTime: 2025-04-22 08:43:38
6+
* @FilePath: \jiangyangcreate.github.io\docs\docs\机器学习\index.md
7+
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
8+
-->
19
---
210
sidebar_position: 7
311
title: 🚧机器学习
412
---
513

614
机器学习是当前发展最热门的方向之一,可以称之为计算机科学的明珠。
715

16+
机器学习的原理其实很简单,创建一个复杂函数,猜测其中的权重的值。然后根据结果来更新这个值。
17+
18+
具体的内容我们可以尝试编写一个求某个数的平方根的例子:
19+
20+
```python showLineNumbers
21+
22+
import numpy as np
23+
import matplotlib.pyplot as plt
24+
25+
# 我们要求解的数
26+
target_number = 17.0
27+
28+
# 初始化权重(我们的猜测值)
29+
weight = 1
30+
print(f"初始随机猜测值: {weight}")
31+
32+
# 超参数
33+
learning_rate = 0.01 # 学习率
34+
epochs = 1000 # 训练轮数
35+
36+
# 存储训练过程
37+
weights_history = []
38+
loss_history = []
39+
40+
# 训练过程
41+
for epoch in range(epochs):
42+
# 前向传播: 计算预测值 (weight * weight 应该等于 target_number)
43+
prediction = weight * weight
44+
45+
# 计算损失: 均方误差 (MSE)
46+
loss = (prediction - target_number) ** 2
47+
48+
# 反向传播: 计算梯度
49+
gradient = 2 * (prediction - target_number) * 2 * weight
50+
51+
# 更新权重 (梯度下降)
52+
weight = weight - learning_rate * gradient
53+
54+
# 记录历史
55+
weights_history.append(weight)
56+
loss_history.append(loss)
57+
58+
# 每隔100轮打印一次结果
59+
if epoch % 100 == 0 or epoch == epochs - 1:
60+
print(f"轮次 {epoch}, 当前估计值: {weight}, 预测值的平方: {prediction}, 损失: {loss}")
61+
62+
# 最终结果
63+
print(f"\n训练后的平方根估计值: {weight}")
64+
print(f"误差: {target_number - prediction}")
65+
```
66+
67+
上述代码展示了机器学习的核心概念:
68+
1. **学习率**:控制每次参数更新的步长
69+
2. **前向传播**:使用当前权重进行预测
70+
3. **损失计算**:衡量预测值与目标值之间的差距
71+
4. **反向传播**:计算损失对权重的梯度
72+
5. **梯度下降**:沿梯度方向更新权重,最小化损失函数
73+
74+
这个简单的例子虽然不是典型的神经网络,但展示了机器学习的基本原理:通过不断调整参数,使模型输出逐渐接近目标值。
75+
876
<DocCardList />

docs/docs/机器学习/传统算法/线性回归.md

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -33,21 +33,17 @@ title: 线性回归
3333

3434
## 求导
3535

36-
这个过程也叫:求梯度、反向传播
36+
这个过程也叫:求梯度、反向传播(狭义)
3737

38-
误差我们用的是均方误差:
38+
误差我们用的是均方误差:求了每个数据与平均值的差的平方,再加和,再求平均
3939

40-
10个数据,第1次算误差,求了每个数据与平均值的差的平方,再加和
40+
每个数据的误差我们一般叫**损失**,写作$loss$,他的值等于数据集中的目标值,减去我们线性公式算出来的预测值。
4141

42-
10个数据,第2次算误差,求了每个数据与平均值的差的平方,再加和
43-
44-
每一次的误差就可以具象化为:$loss = (y - (wx + b))^2$
45-
46-
比较这2个和,也能比较出哪一次效果更好,在同个模型中,是否求平均是无所谓的,因此也可以省略。
42+
即:$loss = (y - (wx + b))^2$
4743

4844
这个表达式中,loss是算出来的,y是目标值,源自数据集,x是特征值,源自数据集。
4945

50-
我们调整w和b的值就可以间接控制loss的值
46+
我们调整w和b的值就可以间接控制loss的值变大或变小(这里主要是期望变小)
5147

5248
我想既更新w,也更新b。
5349

0 commit comments

Comments
 (0)