SICP 练习 2.27

Modify your reverse procedure of exercise 2.18 to produce a deep-reverse procedure that taks a list as argument and returns as its value the list with its elements reversed and with all sublists deep-reversed as well.

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$ 表示学习率,那么有