人工智能——神经网络

回归

  • 分类和回归
  • 二分类和多分类
  • 样本和训练集
  • 线性回归
  • 损失函数
  • 梯度下降
  • 梯度下降解决——元线性回归
  • 多元线性归回
  • 特征缩放
  • 逻辑回归

有监督学习

  • 回归  数值
  • 分类  类别

分类

  1. 二分类   1or0
  2. 多分类 猫、狗、猪

损失函数

y=w*x+b   

  • w    权重
  • b    偏差

梯度下降算法

梯度下降算法是一种常用的优化算法,用于求解损失函数的最小值。其基本公式为:

θ = θ - α ∇J(θ)

其中:

  • θ 表示参数向量,需要更新的参数
  • α 表示学习率,控制更新的步长
  • J(θ) 表示损失函数
  • ∇J(θ) 表示损失函数J对参数θ的梯度

梯度下降算法是一种迭代的优化算法,用于求解目标函数的最小值。贪心算法是一种选择当前最优解的策略,但不一定能得到全局最优解。

在梯度下降算法中,首先需要确定一个初始的参数值,然后计算目标函数对于该参数值的梯度。梯度表示了函数在该点的变化率,指向使函数值减小的最陡峭的方向。梯度的负方向即是使函数值减小的方向,因此可以沿着负梯度方向更新参数,使函数值逐渐减小。

梯度下降算法可以通过以下步骤实现:

  1. 初始参数值:选择初始的参数值。

  2. 计算梯度:计算目标函数对于当前参数值的梯度。

  3. 参数更新:沿着负梯度方向更新参数值。

  4. 终止条件:判断终止条件是否满足,比如达到最大迭代次数或梯度变化小于某个阈值。

  5. 重复步骤2-4,直到满足终止条件。

贪心算法是一种每一步选择当前最优解的策略,但不一定能得到全局最优解。在梯度下降算法中,每一次迭代都是根据当前梯度的方向来更新参数值,选择使函数值减小的方向。每一步都是贪心地选择当前最陡峭的方向,但只能保证朝着最小值的方向前进,而不能保证找到全局最小值。

因此,梯度下降算法是一种比贪心算法更为强大的优化算法,可以用于求解目标函数的最小值。

import numpy as np
import matplotlib.pyplot as plt

# 样本数据
X = np.array([1, 2, 3, 4, 5])
Y = np.array([5, 7, 9, 11, 13])

# 初始化参数
theta0 = 0
theta1 = 0

# 定义学习率和迭代次数
learning_rate = 0.01
num_iterations = 100

# 用于存储每次迭代的损失值
losses = []

# 梯度下降算法
for i in range(num_iterations):
    # 预测值
    Y_pred = theta0 + theta1 * X
    
    # 计算损失函数
    loss = np.sum((Y_pred - Y)**2) / (2 * len(Y))
    losses.append(loss)
    
    # 更新参数
    theta0 -= learning_rate * np.sum(Y_pred - Y) / len(Y)
    theta1 -= learning_rate * np.sum((Y_pred - Y) * X) / len(Y)

# 打印最终的参数值
print("theta0 =", theta0)
print("theta1 =", theta1)

# 绘制损失函数随迭代次数的变化曲线
plt.plot(range(num_iterations), losses)
plt.xlabel("Iterations")
plt.ylabel("Loss")
plt.show()

# 绘制样本数据和回归直线
plt.scatter(X, Y, color='red', label='Samples')
plt.plot(X, theta0 + theta1 * X, color='blue', label='Regression Line')
plt.xlabel("X")
plt.ylabel("Y")
plt.legend()
plt.show()

输出结果: 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

源lie_flat

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值