fgg blog

利器2: Vimwiki 之 安装和适配数据科学的一些配置

Last update: 2022-08-06 23:33:32

# vimwiki 插件简介、安装和一些设置

在 vimwiki 里,所有的入口集中在指定的项目根目录下的 index.md 文档里。也就是要构 建的整个笔记系统(随便管它叫什么),index.md 可以成为它的整体框架以及各个主题的 索引。从这里可以去到各个主题,从各个主题的索引去到对应的内容,也可以从一个内容 去到另一个内容,内容可以是本地文档内/文档间,这完全取决于如何构建内容之间的连接。

vimwiki 提供了必要的基础。但通常我们要写的文档并不是纯文本 (plain text) 而是带有 修饰语法的文本,比如 markdown, Tex/Latex 格式的文档。这两者的区别在于,前者是“ 所见即所得”,意思就是你写出来的内容和最后呈现的内容一模一样;后者则更像是写代码, 最后呈现出来的和所写的内容一致(但大部分时候不会一模一样),有人称之为 “所想即所得”,听起来有点玄乎。直接用 plain text 格式不就完了,折腾这些干嘛?遗憾 的是,只要你想要写一些复杂一点的数学公式(求导的链式法则),那么,没有专门的编辑 器的话,最快能够得到规范的数学公式的方法就是 – 手写。教科书内那些数学公式的呈现 效果基本都来自排版系统工具(Tex/Latex等)的支持。

如果工作的内容涉及到较多的高等数学,并想自己编写的日志博客得到类似教科书式的数学 公式呈现,markdown 文档是相当友好的文本格式,而从 markdown 到最终效果的呈现之间, 需要我们作一些额外配置

现在我只需要用 mardown 格式编写内容,在本地链接的文字上敲击回车键(命令模式下), 就可以打开这个本地链接的内容文档,然后编辑内容或者发呆或者别的什么,敲击 Delete 键(命令模式下)回到之前跳转来的地方;当然也可以设置和使用其他组合键来去到其他地 方。在每个地方,都可以用浏览器展示当前文档的内容的最终呈现效果,比如使用默认的 <leader>+w+h+h 快捷键就能在你的默认浏览器展示当前文档的内容,数学公式正是课本 上的那种它该有的样子,也可以像浏览百科网页时那样,自由跳转,来去自如。

闲话少叙,直接上手。

## 安装 vimwiki 插件

(使用管理插件的 Vim-Plug 插件来安装和管理)

将下面的语句加入你自己的 vim 配置文件中,

Plug 'vimwiki/vimwiki'

然后运行命令 :PlugInstall

利器2: Vimwiki 之 如何用 vimwiki 记笔记

# 个人维基 (personal wiki)

阅读过《爱丽丝漫游奇境》的小伙伴应该会觉得熟悉,维基就像那个“兔子洞”, 每个词条都可以是一个通往其他奇境的大门,但它只对有好奇心的人才打开。 (或者说有好奇心的人才会打开它,尼奥要是没有选择红色💊,故事恐怕就没趣得多)。 这是在维基上阅读时常有的感受。(其他网站很多时候则搞的更像是“盘丝洞”。)

每个人都有创作的冲动。 然而事实可能更简单:平时读书学习工作时喜欢东写西划总会留下一些‘笔记’。 对别人来说就是些胡涂乱画,可自己总觉得“珍贵” – “娘不嫌儿丑”说的大概就是这个。 慢慢地,积累的内容越来越多,涉及的范围越来越广,也就显得越来越零碎。 (嗯,为什么不在开始的时候就规划好呢?爸妈通常都是提这种好问题的高手)。 不过这在我看来更像一种“马后炮”式的责问,总有一丢丢“似是而非”的感觉。 学习的过程更像一种探索过程,对大部分人来说,事先恐怕都无法清晰地知道, 书山的路通向何处,学海的舟引你走向哪里。对于不能预先知道细节的内容, 通常会在开始的时候冠以“我的笔记”这么一个目录,然后下设一些粗略的学科名称目录, 直到不再满意这样的安排。毫无疑问,下一步就是要用一种合适的方式将它们组织起来。

相对独立的主题自成体系,不同主题之间关联的内容可以连接起来, 不仅在阅读时可以享受这种便捷的自由跳转,最好在设计和编写时也能如此。 对我而言,答案就是 vimwiki.

阅读的时候自由跳转,这个好理解,可编写内容不都一篇一篇的来吗? 编写的时候也“胡崩乱跳”的,听起来可不怎么美妙,怕不是有毛病?不,不要误会, 这其实是指:1)同时在多个窗格(Pane)打开多个文档;2)在窗格之间进行“闪转腾挪”。

如果是编写过比较复杂的模块的小伙伴可能会更深有感触, 这种不同文档之间的“旋转跳跃我开天眼”的要求其实并不过分, 只恨自己的屏幕不够多不够大放不下那段段优雅的代码 (据可靠的谣言称,有些程序猿一天80%的时间是在欣赏自己写的代码中度过)。

最典型的莫过于从函数调用的地方,跳转到在那遥远的地方的函数定义模块, 如果这两个地方的关系隔着三五个或者更多的模块的时候,(可能也是需要重构的信号) 那么,如果不能同时将这几个‘密接’文档铺在眼前,而是一个看完再看另一个, 朋友,我不知道你的情况如何,反正我是很容易迷失在这茂密的代码丛林里,晕头转向。

总而言之, 核心的问题在于如何组织这些文档,使得自己在构建个人‘知识库’的过程更丝滑畅快。

维基的特点就是“你中有我,我中有他”,比如说, 在组织和构建关于“线性回归”内容,我希望有一个“入口”文档,称之为主题目录, 这个文档只对要写的章节内容进行罗列和简介,更像一种“顶级菜单” (top level manu) , 这个菜单包含些什么菜呢?简介大概是这样的:

  1. 简单线性回归
    • 斜率和截距
    • 最小二乘法
    • 参数评估有多准
      • 置信度区间
      • 假设检验
      • P值: 有多少爱可以重来
  2. 多元线性回归
    • 自变量和因变量到底有没有关系
    • 因变量和哪些自变量有什么关系
    • 模型拟合
      • 残差(RSE)
      • $R^2$ 统计量
      • Adjusted $R^2$
  3. 贝叶斯线性回归
    • 是先验还是偏见?
      • 我认为 $\Theta$ 不只一个
      • 贝叶斯定律
    • 后验概率估计
      • MCMC
      • 吉布斯采样
  4. 广义线性回归
    • 指数族分布:不只有正态分布
    • 最大熵:我来教你挑选分布
    • 链接函数:线性空间到非线性空间的映射
    • 汉密尔顿蒙特卡洛

这就是关于“线性回归”内容的主题目录, 列出来的每个点都可以设置为链接点(但不是必须这么做), 从这个主题目录,可以去到任何的单个文档,在每个文档里, 都可以设置指向其他文档的链接,或者指向网络资源的链接(事事亲为并非必要)。

西瓜书_误差逆传播算法(BP)

# 误差逆传播算法(error BackPropagation, BP)

BP 算法是迄今最成功的神经网络学习算法。现实任务中使用神经网络时,大多是在使用 BP 算法进 行训练。BP 算法不仅可用于多层前馈神经网络(multi-layer feedforward neural networks)1 ,还可以用于其他类型的神经网络,例如训练递归神经网络。但通常说 “BP网络” 时,一般指用 BP 算法训练的多重前馈神经网络2

## BP网络及变量符号

给定训练集 $D = {(x_1, y_1), \ldots, (x_m, y_m)}, x_i \in \mathbb{R}^d, y_i \in \mathbb{R}^l$ ,即输入 示例由 $d$ 个属性描述,输出 $l$ 维实值向量。为便于讨论,图5.7 给出了一个拥有 $d$ 个输入 神经元、$l$ 个输出神经元、$q$ 个隐层神经元的多层前馈神经网络结构,其中

  • 输出层第 $j$ 个神经元的阈值用 $\theta_j$ 表示,隐层第 $h$ 个神经元的阈值用 $\gamma_h$ 表示;

  • 输入层第 $i$ 个神经元与隐层第 $h$ 个神经元之间的连接权为 $v_{ih}$ ;

  • 隐层第 $h$ 个神经元与输出层第 $j$ 个神经元之间的连接权为 $w_hj$ ;