这周又开了一次线下课程,这次一点代码没讲,只是讲了一下数学基础,讲的内容很简单,听着一点也不吃力,都是大学的数学,内容也比较少,自我感觉吧,这点数学基础肯定是不够的,深度学习的东西虽然我还没入门,但是觉得用到的数学还是蛮多的,可能不需要你写太多东西,但是一定是要理解的,不理解的话,东西是做不成的。废话不多说了,就说说这周学习的内容吧。
为什么要学这些数学内容,其实我不是很清楚的哈,自己大致就是觉得算法中用到了这些数学内容,要理解他们,才要预备的吧,下面是我们老师的PPT的内容,我直接贴图吧,我也写不出来...
高等数学
这部分主要讲的是高等数学部分的微积分的内容,然后又补充了两个大学里面没学过的内容,链式法则和梯度下降法。主要内容我就不说了,只说一下涉及到的内容
-
导数和微分
-
偏导
-
链式法则
-
梯度下降法
线性代数
线性代数都是比较基础的东西,不知道后面会不会用到难点的,矩阵的乘法比较常用,还是多看下矩阵乘法
-
标量、向量、矩阵、张量
-
矩阵转置、单位矩阵
-
矩阵和向量相乘
课后作业
下课后,老师留了一道课后作业,是梯度下降的一道课后习题,使用梯度下降算法求解,如下图所示:
下面是我的求解方法,答案是正确的,已让老师看过:
手写步骤:
代码
'''
题目:使用梯度下降法模拟求解y=(2x+4)2 + 1的最小值
x范围[-10, 6],起点随机选取,参考epsilon:1e-5
当|yn - yn-1| < 1e-5就停止迭代
梯度=方向
学习率=步长
'''
EPSILON = 1e-5
# 求解方程值
def getYValue(x):
return (x * 2 + 4)**2 + 1
# 梯度 * 步长
def gradient(x, step):
return ((x * 8) + 16) * step
if __name__== "__main__":
# 起始点
curXValue = lastXValue = -9.2
curYValue = lastYValue = 0
step = 0.1
count = 1
while True:
lastYValue = getYValue(lastXValue)
curXValue = lastXValue - gradient(lastXValue, step)
curYValue = getYValue(curXValue)
print(lastXValue, curXValue)
lastXValue = curXValue
count += 1
if abs(curYValue - lastYValue) < EPSILON:
print("步长:$ 迭代次数:$ X值:$ Y值:$", step, count, curXValue, curYValue)
break
运行结果:
学习的具体内容,非代码相关的,我就不怎么在博客上写了,因为大学基本都学过,最重要的是如果写的话,会占据我很多时间,我还想往下面多学点东西,见谅,记录自己成长...