被SCAE折磨的一天
SCAE
I. Intros
在复现完CapsNet第一版之后,想复现这篇论文(第三版CapsNet:Stacked Capsule Autoencoders, Adam R. Kosiorek, et al.)。复现的基础是看懂,理解其意义。本篇博客为我读这篇论文时的一些思考,其中当然还有些(很多)不够透彻的地方。要是完全透彻了我估计就可以直接动手复现了。
在复现完CapsNet第一版之后,想复现这篇论文(第三版CapsNet:Stacked Capsule Autoencoders, Adam R. Kosiorek, et al.)。复现的基础是看懂,理解其意义。本篇博客为我读这篇论文时的一些思考,其中当然还有些(很多)不够透彻的地方。要是完全透彻了我估计就可以直接动手复现了。
上一次看这篇论文:Dynamic Routing Between Capsules 的时候,Pytorch技术还很菜,不是特别熟练,被矩阵计算的维数问题搞傻了,写得很痛苦,loss没写完就放弃了。这次在重新读完论文之后,重新试着复现了一波,最后差点败在一个softmax的执行维度上(可以说很奇异了)。第一版caps net网络结构非常简单,对应的evaluation / experiments也很简单。实现见[Github🔗Enigmatisms/CapsNet]
![]() |
![]() |
---|---|
根据digital capsule重建(MNIST 7 epochs) | 根据digital capsule重建(MNIST 7 epochs) |
机队的小伙伴问了我一个问题,说是在一个.hpp
文件中,定义了一个namespace,.hpp
也有头文件保护,在namespace下也定义(声明
/
定义都在这个文件里)了几个函数(非类函数),.hpp
文件中同时还有一个类的定义。那么自然这个文件会被至少两个.cc
文件给include:
结果编译的时候报了redefined的错误,说是namespace下面的函数重复定义了。小伙伴很疑惑。我也很疑惑,开始我觉得是不应该把定义写在.hpp
中,但想到类函数好像可以这么做啊?作为一个没有学过编译原理的自动化学生(请问自动化学生都在学些啥啊?),感到疑惑,于是查了点资料。
2021赛季充分认识到滤波的美妙之处。虽然只前学了DSP,但是在进行实际系统控制的时候,很少有意识地进行滤波或者平滑。2020赛季中设置过一个静止目标滑动平均,在此前没有做过非常大量的滤波。
本文是对近段时间使用的滤波方法进行的一个比较肤浅的总结,包括:
My own implementation of CVPR 2016 paper: Image Style Transfer Using Convolutional Neural Networks. This work is, I think, simple but elegant (I mean the paper, not my implementation) with good interpretability.
2021.11.15 complement: I have no intention to analyze and explain this paper, because I think it's simple, and I have a deep impression of this, therefore there is no point recording anything on the blog. Original Github Repo: Github🔗: Enigmatisms/NeuralStyle. This post is exactly the README.md of the repo.
最近接触了一些有趣的 机器学习 / 控制算法,其中的数学原理非常有意思,大多数都涉及到了矩阵分解以及线性代数解析解的求取。推导这些理论可以帮助深入理解矩阵分解(以及分解后子矩阵的数学意义)以及 矩阵分析和优化理论的数学联系,这些理论都非常优雅而且美妙。
本文将包括以下四个部分:
线性代数确实很有趣,但是展开成\(\sum\)的形式就没有趣了。本文意在分析矩阵特征值在某些场合下的应用以及一些线性代数结论(特别是矩阵/向量求导)(烦人的分子分母布局)。
个人很喜欢贝叶斯学派的理论,感觉贝叶斯理论非常具有美感。
贝叶斯分类器是典型的生成式模型。对于分类问题的概率形式,有\(P(c|x)\)是给定特征情况下,分类结果为c的概率,显然这是我们想知道的(而反过来\(P(x|c)\)可能是Encoder模型所讨论的)。判别式模型直接对\(P(c|x)\)进行建模,举个例子,决策树吧。决策树根据x的不同分量进行划分,每层选取信息增益或者基尼指数最大的属性进行分支。那么决策树这个判别式模型,具体是如何对\(P(c|x)\)进行建模的?
周志华老师的《机器学习》看到了第五章,可总感觉看得太快了(可惜起步太晚了,大三下才系统地学ML)。个人认为走马观花地看完全没有用处,最好是能自己将所有碰到的轮子都写一遍(理想情况),但人的精力毕竟有限,开学了时间也比较紧张,实现这一步就先跳过吧,而细致的理论分析与理解是完全必要的。LDA之前实现过Github Algorithm-Plus🔗,决策树倒是连理论都没怎么细看,只调过库。为了不当调库侠,有写轮子的能力,个人将对这两章进行一下梳理,写一下自己的理解。
LDA(消歧义:Linear Discriminant Analysis,不是Latent Dirichlet Allocation)和决策树都是两个非常简单但是又很优雅的分类器。
SVM (Support Vector Machine 支持向量机) 曾一度导致深度学习的退潮(1995)。Geoffrey Hinton提出BP之后,遇到了sigmoid激活函数梯度消失问题,恰好此时Vapnik提出统计学习理论,正式提出非线性SVM并将其应用,使得这个分类器盛行了20年?直到DL的梅开三度。 恰好大三下学期有《模式识别》课,且有学长说他考前每天必推一遍SVM原理,不如现在趁《运筹学》还热着,尝试自己推导一遍,并实现这一个经典算法。