第一部分:从分类任务认识感知机
1. 机器学习中的“分类”究竟是什么?
假设我们想让计算机判断一个水果是苹果还是橘子。
对于每个水果,我们记录两项可以量化的特征:
$x_1$:重量,或者经过统一尺度处理的重量指标;
$x_2$:颜色,或者经过数值化的颜色指标。
一个水果便可以记为:
\[x=(x_1,x_2)\]
这里的 $x$ 不表示一个神秘的数学对象,它只是一个...
Read More
一、KNN 到底是什么?
1.1 从一个生活中的例子开始
假设你刚转学到一个新班级,想猜一位同学更喜欢打篮球还是踢足球。
你暂时不了解他,但注意到几位与他兴趣、性格和日常习惯比较相似的同学:
与他最相似的同学 A 喜欢篮球;
第二相似的同学 B 喜欢篮球;
第三相似的同学 C 喜欢足球。
如果让你根据这三位同学的情况作一个初步猜测,你大概率会猜“篮球”。理由是:三个...
Read More
SelectionTree在Clangd的Tweak系统中的作用
Clangd的SelectionTree是一个实用工具,用于将编辑器选择(或光标位置)映射到相应的AST节点。它被clangd的Tweak(code action)系统大量使用。当请求code action时,clangd会为请求的范围构建一个SelectionTree,并通过Tweak::Selection输入提供它。这允...
Read More
在网上翻了很久都没有找到可以处理包含自由变量的实现,索性就自己手搓了一个。记录一下:
#include <iostream>
#include <vector>
using namespace std;
// 高斯消元法求解方程组
vector<vector<double>> solveEquations(vector<vector...
Read More
一个体现CPU基本运算流程的demo。
#include <stdio.h>
// CSA
int fullAdder(int a, int b, int carryIn, int* carryOut) {
int sum = a ^ b ^ carryIn; // 异或操作,计算和
*carryOut = (a & b) | (carryIn &a...
Read More
机器学习中层规范化的快速介绍,以及PyTorch示例代码。
导语
训练机器学习算法是一项颇具挑战性的任务,尤其是在使用来自现实世界的数据集时。在人们可能遇到的众多问题中,中间激活层统计量的稳定性问题是非常常见的一个。这篇文章中,我们将简要讨论保证统计量稳定性的常用方法之一:层规范化。
到底什么是层规范化?
遇到的问题
正如你所知道的,训练一个机器学习模型是一个随机化的过程。...
Read More
使用内联函数在头文件中实现模板是目前使用它们的唯一通用方式。
对于一个模板,它的声明和实现不能分开置于头文件和源文件(即 .cpp)中。要解释这一点,我们需要先大致了解C++源代码是如何编译和链接的。
C++源代码的编译和链接
只有源文件会被编译,而头文件不会被直接编译。
(1) 在进行编译之前,C++编译器会对源代码进行预处理,其中就包括将源文件中的...
Read More
“中级语言”
C语言虽然具备完整的高级语言特性,但更多特性的设计是针对CPU和硬件设计的,因为设计C语言的原始目的是为了代替汇编语言开发操作系统。
在设计C语言的那个年代,RISC并不流行,为了提升低主频CPU的性能,增强单条指令的功能,提供更多的指令和指令寻址方式,是更为常用的方法,也就是CISC的思路,从8086/8088开始的x86就是典型的例子。实际上,CISC和RISC孰优孰劣直...
Read More