0%

1. 电子电路

前面2个内容分别介绍了抽象和模块的能力以及如何对信号系统建模, 这一章将更加基本, 涉及到底层的电路(还不是最底层), 并且也会用到模块化的思想来简化设计

2. 1 背景知识

电流, 电压, 怎么根据回路列方程

3. 2 运算放大器

3.1. 动机

电路的设计是复杂的, 因为你随便加一个原件就会影响整个电路的电压或者电流

通过引入运放作为Buffer, 元素之间的影响(interaction)被减小甚至消除了

可以把运放看成是由电压控制的电压源 $V_o=K(V_+-V_-)$

  • 理想的运放, $k\to \infin$ , $V_+=V_-$
  • 感受两端的差距, 通过正反馈不断放大
  • 给$V_+$的负反馈是不稳定的
Read more »

1. 信号与系统

上一章主要的目的就是如何构建复杂系统, 主要是和编程有关, 已经是抽象过一次了, 不需要了解物理层面的问题. 这种状态机的方式有一个问题就是有时候系统太过于复杂, 以至于我们必须要实际运行系统然后再看看实际发生了什么

这一章, 主要介绍的是如何对物理系统建模和控制, 也就是比上一级更加low-level的内容, LTI, 通过一个模型, 将一些输出$x(t)$转化成输出$y(t)$, 因为系统是离散的, 所以我们可以用差分方程或者方块图来表示这个系统, 然后教授通过一个简单的例子说明了为什么差分方程可以变成简单的代数形式(因为比如一个右移算符Operator就可以表示差分), 这让学生在直观上了解了差分方程表示法的优点(容易转换成简单的计算相比于差分方程, 表达又很简介相比于方块图).

如果有反馈的话, 会出现算符作为分母的形式, 我们可以用无穷级数来表示, 比如
$$
\frac{1}{1+2R}=1-2R+4R^2-8R^3 \cdots
$$
这也解释了为什么有反馈的滤波器是无线脉冲响应的(IIR)

现在我能明白这是Top-Down的教学或者学习方式, 我最早接触这种学习方式是在学习计算机网络时使用的教科书: “计算机网络: 自顶向下的方法”, 当时读的时候就觉得非常舒服, 很自然, 先知道目的, 然后逐渐了解一些底层的实现细节. 对我来说这是更加高效的方式(相比于Bottom-Up). 先学电子电路, 物理, 直到大二下才有机器人导论, 到玉泉再学机器人的设计与实践, 在这样的学习过程中我有很长一段时间不知道自己学的东西有什么用, 只是单纯的从理论到实践的过程.

老师的水平和授课质量就不说了, 差距太大, 对知识的理解完全不在一个层次上.

2. 1 基础知识

LTI, 前馈, 反馈之类的

2.1. 助教课 LTI动机与表示

主要应用在控制系统中, 是为了通过建模预测系统之后的输出

3. 2 预测系统行为

Read more »

1. 导论

2. 1 学习目标

MIT EECS的导论课, 以Robotics为切入点进行普及性的教育, 课程主要分为四个专题

  • 软件工程
  • 信号与系统
  • 电子电路
  • 概率与规划

整个课程的目的是让学生能够appreciate工程中的抽象和设计, 能够理解数学模型的重要性, 并利用建模来解决问题, 并给学生一些实验课程来体验四个专题中的内容

我觉得对于刚入学的本科生来说这一门非常好的课程, 让学生了解到专业中真正重要的东西和所要解决问题的本质, 可能任何一个工科的学生都可以学习一下. 我大一时没有意识去主动接触这些优秀的, 真正为学生着想的公开课, 真是非常可惜. 虽然其中一些能力也在实践或者课程中慢慢学到了, 但我相信一个优秀的导论课程会让整个大学时期都少点迷茫, 多点实践.

3. 2 模块化, 抽象与建模

为什么要抽象和模块化? 这在数学\工程\计算机中都有很多应用

  1. 因为要处理的东西很复杂
  2. 人处理复杂性的能力较弱
  3. 分而治之

想象一个例子: 要造一个轮式机器人, 运动到离灯泡一定距离时停止移动. 这其中就会用到光敏电阻来检测到灯泡的距离, 但是课中不会介绍光敏电阻背后的物理原理, 这其实就是一种抽象了. 在抽象和模块化的过程中, 我们要考虑一些其他的问题

Read more »

1. 软件工程

首先介绍了一下基本的Python编程, 然后着重介绍了抽象和模块化的重要性, 并且以移动机器人为例具体介绍了过程, 数据结构, 对象, 状态机

我一开始学习的编程语言就是C语言, 一个非常简单又非常难写的语言, 语法简单好学, 可能一个下午语法就学完了. 但是过于简单导致编程过程中经常花很多时间用在学习一些和程序本身没有关系的知识上(计算机系统), 我觉得实在是得不偿失

首先介绍了基础的PCAP框架, Primitives, Combination, Abstraction, Patterns. 恰好Python可以方便地实现这个框架

这个基本的框架是我们们在考虑建模时要经常考虑的问题, 它可以帮助我们设计有用的模型

2. 1 程序和数据(Low Level)

介绍了一个程序中的基本结构

  • 数据
  • 基本数据
  • 数据结构, 变量更像是一个指针
  • 过程
  • 语句的组合, 可以看成是一个函数
  • 通过定义函数达到抽象的目的
  • 对象: 面向对象编程
  • 对象和实例
  • 继承
  • 递归: 确保每次调用时, 工作量会变小. 递归程序分成两部分, 在解释器上用到了递归的思想
  • 基本情况
  • 递归情况

虽然用的是Python, 但是其中仍然有指针的概念, 一样能将计算机系统介绍的很清楚, 甚至在本章的后半部分还带学生实现了一个简单的解释器, 既兼顾到了广度(程序设计的基本设计模式), 又实现了深度(解释器的设计), 我觉得光这一节课就顶的上我所上过的C程序设计+面向对象+计算机基础+自学的解释器, 效果也更加好

2.1. 助教课: 函数式编程

Read more »

1. 0 动机

机器人不仅是一门有趣的综合学科, 更是对社会有着巨大影响力的高效工具. 在学习技术与理论之余, 我觉得机器人以及人工智能这类模仿人类的技术会对人类造成怎样的影响也是我们应该要关注的.

我觉得问题本质是技术的发展速度超前了人类的发展水平. 理想情况应该是机器完成大部分重复劳动, 包括体力和脑力上的, 而人类则从事更加具有创造性的工作以及追求个人理想.

然而现实情况是机器人技术发展迅速, 不同种类不同形态不同目的的机器人都在迅速丰富, 从面向生产的工业机器人, 到面向服务的服务机器人, 还有面向简单脑力活动的机器学习,机器视觉等. 各个国家也都有推动机器人发展的规划, 比如中国的2025, 德国的工业4.0, 都是在加快机器人的实际应用. 但目前的人类发展教育水平远远不足, 大部分人依然从事的是简单重复的工作.

比如说, 自动化的流水线会对普通工人有哪些影响? 如果所有的简单重复劳动都被机器人所取代, 那缺少一技之长的人应该如何应对? 一个人缺少足够的知识去完成更加高层次的工作, 那么他将无法养活自己与家人? 似乎在物质生产极大丰富之前这类人的生活需要就成了一个值得考虑的伦理问题, 那就是提高生产效率以及个人发展之间的矛盾. 在这样的矛盾下, 我们是否应该继续落实机器人技术? 如果要落实, 那么失业者要怎么办呢.

2. 1 他山之石

以下内容总结于Nils J. Nilson的Artificial Intelligence, Employment and Income

2.1. 1.1 常见观点

一正一反

  • 机器人技术就像其他的工程学科如电子电力/控制工程/机械工程一样虽然消灭了一些岗位但同时也了大量的就业机会(比如将现有的一些操作自动化), 并且大大提高人类的效率. 但是也要注意由机器人所创造的财富成果要合适地分配给需要财富的人(存疑), 这样才能促进消费和市场
  • 举例: 发达国家用机器更多, 失业率比落后国家更低
  • 一项研究(Levin and Rumberger) 表明技术发展其实带来的是工作难度的降低, 比如编程的工作难度相较以前是降低的
  • 作者对这种观点表示悲观, 他认为机器人技术没有那么大的潜力
  • 机器人技术发展十分迅速, 即使机器人创造了一些岗位, 这些岗位的工作也能够被机器人所完成. 除此之外, 历史表明每次技术的革新都会带来失业率曲线的整体上移
Read more »

1. 动机

生活中, 学习中, 我经常会碰到新的知识, 但我从来没有思考过我学习一件事的思维过程是怎样的. 最近碰巧在做毕业设计, 需要学习许多新知识, 再加上一些生活中和别人交流过程中由于思维方式不同造成的误解, 催使我进行深入的思考, 我们到底要怎么说明一件事, 表明自己的观点, 更加有条理地学习一件事

2. 分析

当我了解到一件事情(通过感官, 大部分是视觉, 听觉, 暂时只考虑这两种情况), 大脑将这件事转化成一种描述. 为了避免歧义, 将要讨论的这件事定义为A.

当我看到A或者听到A时, A可能存在以下几种情况

  • 图像
  • 声音(描述)
  • 文本描述

为了能够准确地知道A是什么, 我首先要通过搜索资料或者询问他人等方式知道A在语言中的定义是什么(暂时不考虑人类语言中还没定义的事物), 比如看到一种没见过的水果, 通过询问他人或者查询资料得知是A$\to$西瓜. 或者我们先在书中看到或者听别人说了西瓜, 然后通过查询资料得知了西瓜的形态西瓜$\to$A

在这一步, 实际上已经完成了一种映射, 就是抽象概念和具体事物的映射, A$\leftrightarrow$西瓜, 而所谓的具体事物, 也是一些A的基本属性, 我习惯于将A的图像属性作为第一印象.

无论A是以什么形式被我们所感知到, 我认为首先要知道的是一个定义, 因为有了定义我们才能获取更多的资料来了解它.


Read more »

1. Introduction

In practice, most large matrices are sparse — almost all entries are zeros.

e.g. web link, word occurrence

Problem

  • Space: require a lot of memory
  • Time: a waste of time since most of the operations involve zero

1.1. When

In practice, we will get a sparse matrix since we choose specific encoding schemes

  • one-hot encoding, binary vectors, in recommender system, computer vision
  • count encoding, frequency, in NLP
  • TF-IDF, normalized frequency

1.2. Solution

Use an alternate data structure: only store data of non-zero values

Read more »

1. Motivation

While implementing Randomized SVD, we used LU factorization, that is factors a matrix into the product of a lower triangular matrix and an upper triangular matrix.
$$
A=LU
$$
Why LU is useful?

We can solve $Ax=b$ problem faster

  1. find $A=LU$
  2. solve $Ly=b$
  3. solve $Ux=y$

2. Calculation

$$
A=\left(\begin{array}{cccc}
1 & -2 & -2 & -3 \
3 & -9 & 0 & -9 \
-1 & 2 & 4 & 7 \
-3 & -6 & 26 & 2
\end{array}\right)
$$

Using Gaussian Elimination, after Gaussian Elimination, we will get a upper triangular matrix, so we can regard the combination of eliminiation operation is a lower triangular matrix that is $L_{m-1} \ldots L_{2} L_{1} A=U$
$$
L U=\left[\begin{array}{cccc}
1 & 0 & 0 & 0 \
3 & 1 & 0 & 0 \
-1 & 0 & 1 & 0 \
-3 & 4 & -2 & 1
\end{array}\right] \cdot\left[\begin{array}{cccc}
1 & -2 & -2 & -3 \
0 & -3 & 6 & 0 \
0 & 0 & 2 & 4 \
0 & 0 & 0 & 1
\end{array}\right]
$$

2.1. Partial Pivoting

Note: LU factorization is stable, but not backward stable
$$
A=\left[\begin{array}{cc}
10^{-20} & 1 \
1 & 1
\end{array}\right]
$$

1
2
3
4
5
6
7
8
L1, U1 = GaussianElimination(A)
L2, U2 = LU(A)
np.allclose(L1, L2)
#true
np.allclose(U1, U2)
#true
np.allclose(A, L2 @ U2)
#false...means not backward stable
Read more »

1. Application

1.1. Loss Function

$$
\min {\omega}\left|y-\omega^{T} x\right|{1}
$$

1.2. Regularization

$$
\min {x} f(x)+|x|{1}
$$

2. Advantage

We can consider a easy 2D case, and show why L1 norm is better than L2 norm

2.1. Loss Function

img

L2 norm would strengthen the error

Read more »

1. 总览

Ref

Audio stretch, 也可以称为TSM (time scale modification)

用途:

  • 拉长或缩短信号, 并且不损失信息
  • 将两个语音信号拉成相同的长度, 方便做平均

2. 算法

2.1. Phase Vocoder

频域上的拉伸, 基本想法就是将音频做时频分析, 分成很多小段, 保留音高Pitch. 经过相位移动之后重建波形算法的主要难点和复杂之处在于如何使重叠加法重建中连续窗口的对齐

img

3. WSOLA – Waveform Similarity Overlap-Add

Read more »