- 「特征值分解,奇异值分解和主成分分析」:先定义再动手
$\renewcommand{\diag}{\operatorname{diag}}\renewcommand{\cov}{\operatorname{cov}}$ 首先,定义 $\boldsymbol{\alpha}$ 为列向量,则维度相同的两个向量 $\boldsymbol{\alpha}, \boldsymbol{\beta}$ 的内积可以表示为:
- 「马尔科夫链蒙特卡洛方法和吉布斯采样」:先定义再动手
蒙特卡罗方法 (Monte Carlo) 也称为统计模拟方法,是于 20 世纪 40 年代由冯·诺伊曼,斯塔尼斯拉夫·乌拉姆和尼古拉斯·梅特罗波利斯在洛斯阿拉莫斯国家实验室为核武器计划工作时 (曼哈顿计划) 发明。因为乌拉姆的叔叔经常在摩纳哥的蒙特卡罗赌场输钱,该方法被定名为蒙特卡罗方法。蒙特卡罗方法是以概率为基础的方法,与之对应的是确定性算法。
- 把「Ising 模型,Hopfield 网络和受限的玻尔兹曼机」写成可执行的一页
Ising 模型 最早是由物理学家威廉·冷次在 1920 年发明的,他把该模型当成是一个给他学生恩斯特·易辛的问题。易辛在他一篇 1924 年的论文 1 中求得了一维易辛模型的解析解,并且证明它不会产生相变。 二维方晶格易辛模型相对于一维的难出许多,因此其解析的描述在一段时间之后才在 1943 年由拉斯·昂萨格给出 2 。
- 工程笔记:生成对抗网络简介
生成对抗网络 ( Generative Adversarial Network, GAN ) 是由 Goodfellow 1 于 2014 年提出的一种对抗网络。这个网络框架包含两个部分,一个生成模型 (generative model) 和一个判别模型 (discriminative model)。其中,生成模型可以理解为一个伪造者,试图通过构造假的数据骗
- 落地时怎么看深度学习优化算法
在构建神经网络模型的时候,除了网络结构设计以外,选取合适的优化算法也对网络起着至关重要的作用,本文将对神经网络中常用的优化算法进行简单的介绍和对比,本文部分参考了 Ruder 的关于梯度下降优化算法一文 1 。首先,我们对下文中使用的符号进行同意说明:网络中的参数同一表示为 $\theta$ ,网络的假设函数为 $h_{\boldsymbol{\theta}
- 把「流形学习」写成可执行的一页
在之前的 博客 中,我们曾经介绍过 PCA 方法及其降维的作用。在原始数据中各个特征之间存在着一定的信息冗余,随着特征的不断增加就容易出现“维数灾难”的问题,因此降维的目的就是在尽可能多的保留原始信息的同时减少数据的维度。一般情况下我们将降维方法分为: 线性降维方法 和 非线性降维方法 ,线性降维方法的典型算法有:
- 工程笔记:基于 PyQt5/PySide2 和 QML 的跨平台 GUI 程序开发
先聊聊写界面化程序的目的,在 B/S 结构软件盛行的今天,C/S 结构的软件还有人用吗?答案是肯定的,至少你想用 B/S 结构的软件的时候你得有个 C/S 结构的浏览器,对吧?这样说显得有点抬杠,当然,我认为最重要的还是“简单”,或者说“用户友好”。再 Geek 的人应该也喜欢有的时候偷懒,虽然我称不上 Geek,但也经常在黑框框中不用鼠标敲着各种代码,但是
- 把「Play Safe, Smart Choice & Yuppie」写成可执行的一页
最近是看了 Youtube 上 Wong Fu Productions 的一个系列视频 Yappie ,一下子把脑子中包括很久之前的一些思考就全都串联回忆起来了,所以就写了本文,把这些凌乱的思考拼凑起来。截止到本文写完,Yappie 已经出了两集,视频可能需要梯子,为了不影响理解,简单勾勒一下剧情。
- 「买书,囤书,看书」:先定义再动手
写这么一篇主要是想自我分析一下和读书有关的毛病,写下来会让自己认识的深刻些。尤其是最近一年,书入库明显高于出库,导致未读完的书都快摆不下了。总结起来主要是两个问题:
- 落地时怎么看卷积神经网络
卷积神经网络 (Convolutional Neural Network, CNN) 是一种目前广泛用于图像,自然语言处理等领域的深度神经网络模型。1998 年,Lecun 等人 1 提出了一种基于梯度的反向传播算法用于文档的识别。在这个神经网络中,卷积层 (Convolutional Layer) 扮演着至关重要的角色。
- 落地时怎么看媒介之战
本文为《娱乐至死》(Amusing Ourselved To Death) 的读书随想。
- 落地时怎么看循环神经网络
文章部分内容参考了 Christopher 的博客 Understanding LSTM Networks ,内容翻译和图片重绘已得到原作者同意。
- 「词向量」:先定义再动手
文本表示是计算机处理自然语言的核心,我们希望计算机能够同人类一样对自然语言能够实现语义层面的理解,但这并非易事。在中文和拉丁语系中,文本的直观表示就存在一定的差异,拉丁语系中词与词之间存在天然的分隔符,而中文则没有。
- Seq2Seq 和注意力:机器翻译那套为什么还在用
Encoder-Decoder 是一种包含两个神经网络的模型,两个网络分别扮演编码器和解码器的角色。Cho 等人 1 提出了一个基于 RNN 的 Encoder-Decoder 神经网络用于机器翻译。网络结构如下图所示:
- 「利用 Flask 和 Google App Engine 部署模型服务」:先定义再动手
对于做算法的同学,大家或多或少的更关心模型的性能指标多些,对于一些工程性问题考虑的较少。模型的部署是这些工程性问题中重要的一个,它直接关系到模型在生产系统的使用。一些成熟的机器学习框架会提供自己的解决方案,例如 Tensorflow 提供的 Serving 服务等。但很多情况下我们构建的工程可能不只使用了一种框架,因此一个框架自身的部署工具可能就很难满足我们
- 落地时怎么看计算复杂性与动态规划
计算复杂性 (Computational Complexity) 是用于对一个问题求解所需的资源 (通常为 空间 和 时间 ) 的度量。在评估一个算法的时候,除了算法本身的准确性以外,同时需要关注算法运行的时间以及占用的内存,从而根据实际情况选择合适的算法。
- 「集成学习算法」:先定义再动手
传统机器学习算法 (例如:决策树,人工神经网络,支持向量机,朴素贝叶斯等) 的目标都是寻找一个最优分类器尽可能的将训练数据分开。集成学习 (Ensemble Learning) 算法的基本思想就是将多个分类器组合,从而实现一个预测效果更好的集成分类器。集成算法可以说从一方面验证了中国的一句老话:三个臭皮匠,赛过诸葛亮。
- 工程笔记:相似性和距离度量
相似性度量 (Similarity Measurement) 用于衡量两个元素之间的相似性程度或两者之间的距离 (Distance)。距离衡量的是指元素之间的不相似性 (Dissimilarity),通常情况下我们可以利用一个距离函数定义集合 $X$ 上元素间的距离,即:
- 工程笔记:如何阅读一本书
本文为《 如何阅读一本书 》的简要总结,附加部分个人理解,仅供参考和快速查阅。楷体引用部分多为书中原话,其他部分多为总结和个人理解。
- 「贝塞尔曲线」:先定义再动手
知道 贝塞尔曲线 (Bézier Curve) 这个名字已经有很长一段时间了,但一直没有去详细了解一番。直到最近想要绘制一个比较复杂的曲线,才发现很多工具都以贝塞尔曲线为基础的,这包括 Adobe 全家桶中的钢笔工具,还有 OmniGraffle 中的曲线。迫于仅靠猜其是如何工作的但一直没猜透的无奈,只能去详细了解一下其原理再使用了。