鱼书学习Day3&4
主要学习的是误差反向传播算法和实现,总的来说在算法推导上卡的好久,卡的最久的是数学hh,上学期没学线代,以及没学习高数下,导致许多数学证明看的有些吃力,基本情况就像是“我看懂了这里要求导,以及这个求导结果怎么用,但是怎么算这个的导数我不会算”,这很大程度地影响了我的阅读的连续性,让我看着很难受,不过在Gemini之神的帮助下还是逐渐理解了。 此处贴出ai对于Softmax with loss层的反向传播算法的数学推导,看到最后只觉得惊为天人,再次领略到了数学的简洁美 数学推导简述如果你想知道这个 $y_k - t_k$ 是怎么来的,可以看这三个步骤: 第一步:计算 Softmax 的导数 当 $i=j$ 时:$\frac{\partial y_i}{\partial a_i} = y_i(1-y_i)$ 当 $i \neq j$ 时:$\frac{\partial y_i}{\partial a_j} = -y_i y_j$ 第二步:计算 Loss 对 $y$ 的导数 $\frac{\partial L}{\partial y_i} =...
鱼书学习Day2
参照鱼书第四章写了一遍前向传播版的梯度下降训练神经网络权重的算法(不用ai就是收获颇丰啊) 以下贴出代码 发现先前的图片好像寄了所以代码直接传代码形式算了 针对二层(输入-单个隐藏层-输出层)网络写的求梯度方法相当于造了遍轮子,不过造轮子确实学东西啊,而且不用ai了感觉写起来其实好麻烦 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475import sys,ossys.path.append(os.pardir)import numpy as numpyfrom common.functions import *from common.gradient import numerical_gradient"""二层训练网络所需内容:Params1、每一层之间的权重与偏置的存放 Grads2、每一次之间的权重与偏置的梯度的计算...
鱼书学习Day1
说是Day1实际上学了一段时间了,不过断断续续的,由于比赛需要给自己定了DDL,这里的记录也是直接搬的飞书日志hhh,接下来冲刺吧,就以当下为Day1! 2026/2/4突击了一下梯度下降算法,高数下没学过导致看的蒙蒙的,全靠问ai在蒸啊,照着教材示例写了个通过梯度下降求多元函数极小值的程序,说是写,全是补全的,到最后的收货也就是看懂了代码思路而已……(学习真不能开ai代码补全啊,你补完了我学什么啊) 简析梯度下降: 首先说明梯度 ,其为多元函数所有偏导数的一个集合,或者说可以说是多维向量/数组。 进而,通过计算梯度预判函数变化趋势,对应变量减去对应偏导数以让整体逐渐逼近最小值 令我PTSD的是竟然还需要调节学习率,即代码中的lr(learning rate) ,是减去的偏导数要乘的倍数,可理解为每次学习的“步长” 学习率如果过大可能发散(什么超调艹) 过小的话如果学习次数还小的话可能来不及收敛就结束了,哪怕增大学习次数让它收敛,也浪费算力。 所以说要调啊艹(怎么这辈子跟调参脱不开了md) 希望有方法能够进行类似于系统辨识的方式减轻调参的牢(这种...
欢迎来到我的博客
这是第一次写博客!