浙大翁恺老师《C 语言程序设计进阶》笔记

说明:本文档为浙大翁恺老师《C 语言程序设计进阶》课程内容笔记,主要记录学习过程中的一些重要或自己不懂的知识点,方便随时反复查看,内容不一定适合其他人。

如果想看 C 语言基础版的,可以移步:浙大翁恺老师《程序设计入门——C语言》笔记 | Yam

小感想:自从大学上过这门课后就再没碰过了。这次学完两门课,写了一些代码,才慢慢有了一些感觉。这种感觉不光是对 C,更是对写代码和深入探索未知的过程。虽然有时候也会情绪低落、状态低迷,什么都不想做,但整体还是蛮开心的,也从没有想过放弃。希望能在这条路上与更多的小伙伴同行。

目录

Week1:指针与字符串

指针的使用

指针的应用场景1

  • 交换两个变量的值

    1
    2
    3
    4
    5
    6
    void swap(int *pa, int *pb)
    {
    int t = *pa;
    *pa = *pb;
    *pb = t;
    }
  • 函数返回多个值,某些值就只能通过指针返回

    • 传入的参数实际上是需要保存带回的结果的变量

More

NLP 与人工智能

NLP 很难,但如果用一句话概括这种难度,应该是 “语义理解”,也就是让机器理解自然语言。“理解” 的意思是它明白那句话是什么意思,这个意思包括字面表现出来的意思和字面背后说话人实际想要表达的意思。比较上层的应用自不必说,即便是最底层的分词、词性标注、句法分析等任务也是同样涵盖在内。“分词” 是汉语以及其他一些没有对词语进行分割的语言才需要做的,而汉语相比其他语言除了分词上的问题外,还有大量汉语本身的特殊问题。仅拿文字处理举例,汉语中看似完全相反的话可能表达的是一个意思,比如 2018(CCF-GAIR)NLP 专场云孚科技张文斌分享的几个例子:了得 VS 了不得,我可想死你了 VS 你可想死我了;汉语的抽象程度相对更高,往往几个字就表达了很多东西,这点可以通过书籍的薄厚程度就能感知一二;汉语最小单元汉字数量非常多,相比英语熵要大很多。再说分词,之前看过一篇文章讲到分词,提到两个观点:第一,分词的主要目的是消除歧义;第二,汉语的不分词是导致其在世界范围内流传不广、难学的主要因素之一。我对这两个观点都比较认同,不分词从认知的角度来说的确需要更多的注意力,其实我们阅读过程中大脑后台已经做了分词,所以文字的不分词有点感觉是浪费人的精力。当然其他如词性标注、实体识别、句法、语义角色等任务也有类似的问题。

More

浙大翁恺老师《程序设计入门——C语言》笔记

说明:本文档为浙大翁恺老师《程序设计入门——C语言》课程内容笔记,主要记录学习过程中的一些重要或自己不懂的知识点,内容不一定适合其他人。

翁老师讲课真的很通俗易懂,这个课程作为入门课难度适中,推荐需要学习 C 语言的同学从这门课开始。

目录

  1. 程序设计与 C 语言
    1.1 计算机和编程语言
    1.2 C 语言
    1.3 第一个程序
  2. 计算
    2.1 变量
    2.2 数据类型
    2.3 表达式
  3. 判断与循环
    3.1 判断
    3.2 循环
  4. 进一步的判断与循环
    4.1 逻辑类型和运算
    4.2 级联和嵌套的判断
    4.3 多路分支
    4.4 循环的例子
    4.5 判断和循环常见的错误
  5. 循环控制
    5.1 循环控制
    5.2 多重循环
    5.3 循环应用
  6. 数组与函数
    6.1 数组
    6.2 函数的定义与使用
    6.3 函数的参数和变量
    6.4 二维数组
  7. 数组运算
    7.1 数组运算
    7.2 搜索
    7.3 排序初步
  8. 指针与字符串
    8.1 指针
    8.2 字符类型
    8.3 字符串
    8.4 字符串计算

期中测验
期末考试
附录

1. 程序设计与 C 语言

1.1 计算机和编程语言

  • 人:What to do;计算:How to do
  • 计算机做的所有事情都是计算,计算的步骤就是算法。
  • 程序的执行
    • 解释
    • 编译

1.2 C 语言

  • 历史

    • FORTRAN - BCPL - B - C
    • 1973 年 3 月:第三版 Unix 上出现了 C 语言编译器
    • 1973 年 11 月:第四版 Unix 完全用 C 语言重写
  • 版本

    • 经典 C

    • 1989 ANSI C

    • 1990 ISO 接受了 ANSI 的标准——C89

    • 1995 1999 两次更新:C95 C99

  • 应用
    • 操作系统
    • 嵌入式系统
    • 驱动程序
    • 底层驱动:图形引擎、图像处理、声音效果等

1.3 第一个程序

More

线性代数的本质笔记

说明:来自:3Blue1Brown,关键点的记录,用来当笔记随时查阅和再学习的。多图。
感谢作者的付出,真心很赞。

吐槽一下:B 站真的不是看学术视频的好地方,乱七八糟的弹幕每次要屏蔽,连续暂停会卡顿,快进快退会卡顿。

后面六个视频要多看几遍。

目录

序言

几何水平上的理解能让你判断出解决特定问题需要用什么样的工具,感受到他们为什么有用,以及如何解读最终结果。数值水平上的理解则能让你顺利应用这些工具。

向量究竟是什么?

将向量看作运动(就像在数轴上一样)。

看作空间中的箭头,看作数字列表。

线性组合、张成的空间与基

将向量看作单位向量的缩放(缩放向量并相加):选择标量,对向量分别进行缩放,然后把结果相加。

如果选择不同的基向量会怎样?

它同样允许我们在一对数和二维向量之间自由转化。但这种变换关系与之前用 i 帽和 j 帽的变换关系完全不同。

每当我们用数字描述向量时,它都依赖于我们正在使用的基。

但当共线时,它们张成的空间就是终点落在一条直线上的向量的集合。

两个向量张成的空间实际上是问仅通过向量加法与向量数乘这两种基础运算,能获得的所有可能向量的集合是什么?

Trick:单个向量看作箭头;多个向量看作点(否则会太拥挤)。所以对大部分二维向量对来说,它们张成的空间是整个无限大的二维平面;但如果共线,它们张成的空间就是一条直线。

三维与二维类似:当你缩放第三个向量时,它将前两个向量张成的平面沿它的方向来回异动,从而扫过整个空间。另一种思考方式是:利用自由变化的三个标量,从而得到空间中所有的三维向量。

一组向量中如果有至少一个是多余的(没有对张成空间做出任何贡献,如二维的共线、三维的共面等),也就是移除那个向量而不减小张成的空间,此时它们是 “线性相关” 的。另一种表述是,其中一个向量可以表示为其他向量的线性组合,因为这个向量已经落在其他向量张成的空间之中。

另一方面,如果所有向量都给张成的空间增加了新的维度,它们就被称为 “线性无关” 的。

空间的一组基的严格定义:张成该空间的一个线性无关向量的集合。

More

微积分的本质笔记

说明:来自:3Blue1Brown,关键点的记录,用来当笔记随时查阅的。多图(69张)。
感谢作者的付出,真心很赞。

目录

导论

微积分的三个中心思想:积分、微分、两者互逆。

(难怪正态分布这么多见……)

f(x) 可以是任意函数

微积分基本定理:积分与导数之间的来回转化关系,也就是某个图像下方面积函数的导数能够还原出定义这个图像的函数。它将积分和导数两大概念联系起来。

More

机器学习概念

有幸与 ahangchen (梦里茶) luopengting (lpt) 一起参与了《机器学习》(周志华)概念整理项目,今天正式完稿。我负责整理了以下章节:

最终的电子书:西瓜书概念整理。欢迎大家阅读。如任何疑问或建议,随时欢迎提出。

注意:

  1. 由于作了一些简化,可能会与上面链接中的内容不太一致。
  2. GitHub 中公式无法渲染,下载到本地即可,推荐用 Typora — a markdown editor, markdown reader.

人工智能哲学笔记

目录

背景

  • 来源:复旦大学公开课:人工智能哲学_全 7 集_网易公开课
  • 讲师:徐英瑾教授
  • 课程介绍:本课程从人工智能科学发展的科学史概要出发,讨论了哲学思辨和人工智能研究之间的密切关系,并从人工智能的角度,重新审视了近代欧洲哲学对于 “机器是否能够思维” 这个问题的思辨结论。尔后,讨论了如何从当代计算机科学的角度来解读康德哲学,并从中得到一个关于类比推理的计算模型。本课程也讨论了当代美国哲学家塞尔对于 “计算模型如何获得关于符号的语义知识” 的忧虑,并进一步探讨了这一忧虑在计算机科学内部的表达形式:框架问题。

More

Gan 原理、证明与实现

说明:本文主要介绍 Gan 的基本原理、证明过程及简单的代码实现。这里是文章链接:Gan

  • 文章目录
    1 简介
    2 证明
    2.1 概念与过程形式化
    2.2 理论推导
    2.3 证明
    2.3.1 最优判别器
    2.3.2 最优生成器
    2.4 重述训练过程
    2.4.1 参数优化过程
    2.4.2 实际训练过程
    2.4.3 最终过程
    3 代码
    4 代码学习
    5 应用
    6 数据集
    7 其他资料
    8 参考文献