深度学习介绍
基于仿生学的一种自成体系的机器学习算法,包括但不限于图像识别、语音、文本领域。
梯度下降法
作为深度学习算法种常用的优化算法
梯度下降法,是一种基于搜索的最优化方法,最用是最小化一个损失函数。梯度下降是迭代法的一种,可以用于求解最小二乘问题(线性和非线性都可以)。在求解机器学习算法的模型参数,即无约束优化问题时,梯度下降是最常采用的方法之一,另一种常用的方法是最小二乘法。在求解损失函数的最小值时,可以通过梯度下降法来一步步的迭代求解,得到最小化的损失函数和模型参数值。
最小二乘法的问题
梯度下降
机器学习算法都需要最大化或最小化一个函数,这个函数被称为"目标函数",其中我们一般把最小化的一类函数,称为"损失函数"。它能根据预测结果,衡量出模型预测能力的好坏。在求损失函数最小化的过程中使用梯度下降法。
在直线方程中,导数代表斜率,在曲线方程中,导数代表切线的斜率。导数代表着参数、 单位 变化时,损失函数相应的的变化。通过上面图中的点可以发现,该点的导数为负值,所以随着参 数
# import random
# import matplotlib.pyplot as plt
#
# _x = [i/100. for i in range(100)]
# _y = [3*e+4+random.random()/10 for e in _x]
# print(_x)
# print(_y)
#
# # BP
# w = random.random()
# b = random.random()
#
# for i in range(30):
# for x,y in zip(_x,_y):
# z = w * x + b
# o = z - y
# loss = o ** 2
#
# dw = -2*o*x
# db = -2*o
#
# w = w + 0.1*dw
# b = b + 0.1*db
# # print(dw,db)
# print(w,b,loss)
#
# plt.plot(_x,_y,".")
#
# v = [w*e+b for e in _x]
# plt.plot(_x,v)
# plt.show()
import random
if __name__ == '__main__':
x = [ i/100. for i in range(100)]
y = [3*i+4+random.random()/100. for i in x]
w = random.random()
b = random.random()
for _ in range(5000):
for _x,_y in zip(x,y):
y_pre = _x*w+b
o = y_pre-_y
loss = o**2
dw = -2*o*_x
db = -2*o
w = w+0.1*dw
b = b+0.1*db
print(w,b,loss)
公式原理
梯度
目标: 使 尽可能的小
目标: 使 尽可能小
由于目标函数的梯度随着特征向量的增加会越来越大,这是不合理的,因此我们给它加个系数 。
目标: 使 尽可能的小
有时也取