【杂谈】杂谈与重启的读书计划
哲学是对概念的创造,科学是对功能的创造,艺术是对感觉的创造。 我以这句话开题,是因为这句话是我最认可的一句话之一,这句话类似的说法出自《导读德勒兹》。一切学科都可以被分割为这三个学科的组合,比如数学,就是同时是哲学和科学,当然数学也会给人带来特别的感觉,便也是艺术。当然,这种分割是毫无意义的——因为所有学科都被化为了哲学+科学+艺术。不过,需要注意的是,当我们在谈论哲学、科学和艺术的时候,我们 ...
阅读更多
【MacOS】使用小记
引子 最近奖学金发下来了,打算用这点钱买点新的电子产品,思来想去发现自己游戏本的续航不够好,甚至撑不过一节课(90min)的时间,通过询问社团内的同学,得知MacBook Air的续航很出色。之前听说过MacOS是一个发展非常成熟的类Linux系统,于是就购入了一台MacBook Air M4 24G+512G。通过这两天的使用,我个人还是非常喜欢MacOS的。 初见印象 这款笔记本非常之轻,非常 ...
阅读更多
【RethinkAI】传统序列模型
引子 在Transformer架构流行之前,自然语言的处理,尤其是NER(命名实体识别)等任务,通常是利用传统的序列模型处理的,比如隐马尔可夫模型、条件随机场等。实际上,这些模型的假设通常是——模型的未来状态只与当前状态有关。这类模型的发展以HMM(隐马尔可夫模型)为起始,经过MEMM(最大熵马尔可夫模型),到CRF(条件随机场)为止。这些模型在现在已经很少使用了,不过依然有着意义。本篇就来探讨一 ...
阅读更多
【AI】LLM推理的不确定性分析
引子 这篇文章改自我“文本理解”课程的pre。 参考的文章有两篇,第一篇是NeurIPS 2025 Oral的论文Give Me FP32 or Give Me Death? Challenges and Solutions for Reproducible Reasoning,第二篇是Thinking Machines提出的技术报告Defeating Nondeterminism in LLM ...
阅读更多
【算法】滑窗算法
前言 滑窗算法常用于序列的连续子序列的处理。通过两个指针维护一个窗口,通过一些逻辑对这个窗口——亦即一个连续的子序列——进行处理。 简单的例子:最长无公共字母的子串 这道题可以通过LeetCode 3访问,一个AC解是: 12345678910111213class Solution: def lengthOfLongestSubstring(self, s: str) -> int: ...
阅读更多
【算法】链表
前言 链表是一个不常使用在日常软件开发中的数据结构,但是,却经常会被用于出算法题,这是因为,链表的两个元素之间是通过next指针相连,如果没有维护好这个指针信息,就会导致无法访问到某一元素。 我们一般使用单向链表,其中每个元素的结构包括一个data变量和一个next指针,前者用于存储数据,后者用于记录下一个元素的地址,C语言的表示为: 1234typedef struct LinkedListNo ...
阅读更多
【算法】双指针
前言 双指针是一种用于解决区间问题的算法,这类算法通常的复杂度都是$\Theta(n)$。其实,我们可以将二分看作一种特殊的双指针,每次筛选掉一半的数据。同样的,双指针也可以看作一种特殊的二分,只不过每次通常筛选掉一个数据。 简单的例子:回文串的判断 这道题可以通过LeetCode 125访问,这道题的一个AC解是: 12345678910111213class Solution: def ...
阅读更多
【算法】二分法
前言 分治法的通用步骤是:划分-求解-合并。将一个比较大的问题拆分成若干小问题,然后分别求解。分治法和动态规划的区别在于,分治法通常求解子问题之间彼此独立的场景,而动态规划用于求解子问题之间不独立的场景。这一区别将在动态规划一节中阐述。 分治法最常用的算法为二分法,也就是将问题分割为两个子问题,分别求解之后进行合并。 简单的例子:归并排序 用Python语言的归并排序实现如下所示: 1234567 ...
阅读更多
【算法】算法设计与分析
前言 本系列记录我对于各种算法的理解。 本篇改自我本科课程“算法设计与分析”的笔记。本篇不通过例子讨论具体的算法。 算法复杂度分析的数学工具 算法是为了解决问题而生的,它必须有这样几个性质:可终止、有确定性、正确性、有输入/输出。算法的复杂度分析通常从两个方面来入手——时间复杂度分析和空间复杂度分析。 时间复杂度分析通常以操作的个数衡量。对于一个特定的输入来说,算法的时间复杂性是对该输入产生结果所 ...
阅读更多
【RethinkAI】分词与词嵌入技术
前言 计算机没有办法直接理解、存储自然语言。在AI之外的领域,字符串操作通常是以各种字符编码来进行运算的,比如ASCII码、UTF-8编码等等。在AI中,我们也需要一种利用计算机技术,将自然语言转化为计算机能够理解的表示的方法。 通常,我们会将自然语言进行两步操作——分词和词嵌入。其中,分词是指将一个句子分成若干基本单元,词嵌入则是将分割到的基本单元转化为向量。 分词 所谓分词,就是将句子变成若干 ...
阅读更多