SICP 练习 1.46

Several of the numerical methods described in this chapter are instances of an extremely general computational strategy known as iterative improvement. Iterative improvement says that, to compute something, we start with an initial guess for the answer, test if the guess is good enough, and otherwise improve the guess and continue the process using the improved guess as the new guess. Write a procedure iterative-improve that takes two procedures as arguments: a method for telling whether a guess is good enough and a method for improving a guess. Iterative-improve should return as its value a procedure that takes a guess as argument and keeps improving the guess until it is good enough. Rewrite the sqrt procedure of section 1.1.7 and the fixed-point procedure of section 1.3.3 in terms of iterative-improve.

CS61A 的项目四之 Scheme 解释器实现 (2021-Fall)

最近正在跟着《Crafting interpreter》这本书写解释器,原本书里面用 Java 实现了一个 Tree-walker 解释器 jlox,我正在用 Python 重写一遍,称为 pylox。看了这本书感觉对解释器的理解越来越深刻了,很推荐👍。此时的我突然想起来之前看完的 CS61A 的 Scheme 解释器还有几个小问题没有解决,导致它一直是未完成的状态,于是今天我打开了这个项目,打算从头到尾捋一遍,讲讲思路。

用 SRTBOT 框架分析动态规划问题

Changelog:

在做算法题的时候,让我头疼的经常是动态规划问题,它属于那种自己琢磨半天想不出来,但是看了答案之后会恍然大悟,下次再做的话很有可能又忘记了的一类问题。我也曾经看了很多人的题解,试图消化、吸收、应用他们的思路,但我一直找不到一个归纳得特别好的框架,似乎每个人都有自己解决动态规划的思路,将他们的思路应用在没有见过的动态规划问题的时候我总是遇到困难,而他们的方法轮似乎也无法让我处理所有的动态规划问题。这种寻寻觅觅对动态规划似懂非懂的状态,终于在我看完 MIT6.006 的课程之后发生了改变,课上老师提出了解决动态规划问题的 6 个步骤——被称为 SRTBOT 框架,我发现它是如此地好用,因此我决定写下这篇博客来与大家分享🙌

反向传播公式推导和理解

更新:矩阵形式的反向传播可以看 这里

在深度学习中,模型的优化是通过采用梯度下降法不断更新权重和偏置项,让损失越来越小。其中的核心就是反向传播算法。回忆梯度下降的公式,用 $\theta$ 表示模型所有可学习的参数,$J$ 表示损失函数,$\alpha$ 表示学习率,那么有

$$ \theta \leftarrow \theta - \alpha * \frac{\partial J}{\partial \theta} $$

反向传播要求解的就是上面式子中 $\frac{\partial J}{\partial \theta}$ 这一项。只有正确高效计算出梯度,模型才可以沿着梯度的负方向更新不断优化。

线性回归模型指南 - 理论部分

最近,重新刷起了吴恩达的机器学习课程,系统性复习了之前学过的知识,发现又有不少收获,打算仔细整理一番👍

要谈论什么是线性回归首先要对什么是机器学习有一个基本的认识,什么是机器学习?抽象来说机器学习就是学习一个函数 $$ f(input) = output $$ 其中 $f$ 指的就是具体的机器学习模型。机器学习就是自动拟合输入 - 输出之间的关系的一套方法论。有时候我们会发现一些问题很难定义出一个具体的算法来解决,这时就是机器学习发光发热的地方了,我们可以让它从数据中自己学习、总结一些模式,做出相关的预测。这也是它和传统的算法(二分、递归等)区别的地方。不得不承认,机器学习从定义上来说就很迷人,它似乎为所有难以解决的问题提供了一套可行的解决框架。恰恰现实生活中的一些问题就是很难用传统算法解决的