1.梯度下降
梯度下降是迭代法的一种,可以用于求解最小二乘问题(线性和非线性都可以)。在求解机器学习算法的模型参数,即无约束优化问题时,梯度下降(Gradient Descent)是最常采用的方法之一,另一种常用的方法是最小二乘法。在求解损失函数的最小值时,可以通过梯度下降法来一步步的迭代求解,得到最小化的损失函数和模型参数值。反过来,如果我们需要求解损失函数的最大值,这时就需要用梯度上升法来迭代了。在机器学习中,基于基本的梯度下降法发展了两种梯度下降方法,分别为随机梯度下降法和批量梯度下降法。
2.反向传播
反向传播算法,简称BP算法,适合于多层神经元网络的一种学习算法,它建立在梯度下降法的基础上。BP网络的输入输出关系实质上是一种映射关系:一个n输入m输出的BP神经网络所完成的功能是从n维欧氏空间向m维欧氏空间中一有限域的连续映射,这一映射具有高度非线性。它的信息处理能力来源于简单非线性函数的多次复合,因此具有很强的函数复现能力。这是BP算法得以应用的基础。
3.计算图
计算图是一种数据结构,用于表示计算过程。具体来说,计算图是一组节点和边组成的图,其中节点表示计算单元(如矩阵乘法、加法等),边表示数据流动(即数据在计算单元之间的传递)。在深度学习中,计算图用于表示神经网络的计算过程,可以帮助我们更好地理解和调试网络。在 TensorFlow、PyTorch 等深度学习框架中都使用了计算图,可以通过它来构建、训练和评估神经网络。
4.使用Numpy编程实现例题
建立矩阵a ,初始化为[[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]],输出(0,0),(1,2),(2,0),(3,1)
a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]])
b = np.array([0, 2, 0, 1])
print(a[np.arange(4), b])
结果:1 6 7 11
5.使用PyTorch的backward()编程实现例题
import torch
from torch.autograd import Variable
a = Variable(torch.FloatTensor([[1, 2], [3, 4]]), requires_grad=True)
out = torch.mean(a*a)
out.backward()
print(a.grad)