DL-and-NLP(I)

这个专栏是昨天刚开的,说实话只是用来记录自己读过的好博客,看过的好视频,学过的好教程,等等这些资源. 关于文学,关于音乐,关于哲学,当然还有关于我的专业方向

我从4月开始在东京当家里蹲
第一篇文章就用来记录这段时间学深度学习(机器学习)和自然语言处理的资源汇总
其实一直都在Gist上面记录的,所以只是复制过来,简单修整一下罢了

在进入正题之前先说一下我认为的,深度学习的最好入门路径(再往后的我也没学到,所以只说我知道的), 同时也是人类发明神经网络的历史:
单Perceptron(线性2分) -> 单层多Perceptron(线性多分) -> 由XOR问题引入隐藏层,入门Multilayer Perceptron -> Backpropagation

下面第一篇文章是我认为最好的,所以将它抽离了时序,如果有兴趣一定不要错过这个

A ‘Brief’ History of Neural Nets and Deep Learning
2020/04/30 本来我是抱着看多层神经网络的知识找到了这篇文章, 发现溯源历史真的是学习一个学科的最好方式, 从单层的单神经元到多神经元, 随后经历AI寒冬, 最终通过找到backpropagation算法抵达多层神经元, 历史在这篇文章里唯妙唯俏。 试问如果不知道backpropagation算法开发的原因, 我们还有什么动力去学习它? 但是这篇文章只是告诉我们用微积分的The Chain Rule来解决多层反馈学习问题, 但是却没有一个例子帮助我们理解, 所以第二天的现在我还在为理解这个而奋斗。
  • 怎么理解感受器模型算法的变种 w = w + rate * (expected - predicted) * x ?
  • Fully connected与非Fully connected神经网络有什么区别?
  • 为什么需要多层神经网络? 为什么需要非完全链接?
  • 手写双输出单层感受器
  • Activation函数是必须的吗?
  • 怎么理解隐藏层用于提取feature? 比如用猫和狗的例子, 第一层提取出‘毛色是否条纹’, 第二层才输出猫狗, 但是这样的第一层是人工提取的, 没办法泛用, 而且这个不是隐藏层, 那么隐藏层提取出来的是什么?
  • 一张图片(20 * 20 * 2), 提取出来的input是什么样的? 它是多少维空间上的一个点?
  • 隐藏层是如何获得反馈的?
  • 加入不给隐藏层的输出下定义, 那么隐藏层神经元的输出又代表了什么呢?
  • 反向传播是什么?
  • 为什么说perceptron算法不适用于多层神经网络?
  • 解决中间层无法接反馈的核心算法是什么? The _ Rule?
  • 微积分的链式求解是怎样的?
  • 即使知道了用链式求解, 如何同时调整复数个参数? 按照什么规则去调整?
  • Derivative Rules是怎么推算出来的?
  • 两种不同引入backpropagation的解释是怎样的? 哪种是错的? 错在哪里?
McCulloch-Pitts Neuron — Mankind’s First Mathematical Model Of A Biological Neuron
2020/04/27 MCP模型, 人类第一个神经元模型, 接下来又读了续篇->
  • MCP -> Perceptron -> 手写单层神经网络并验证 -> 回到书本学习 这样的规划路线对不对?
  • x in {0, 1}, f, g, y in {0, 1} 分别代表什么? 哪个是聚合函数?
  • 怎么理解Inhibitory input和Excitatory input?
  • 怎么用MCP precise representation来画出And, Or函数?
Perceptron: The Artificial Neuron (An Essential Upgrade To The McCulloch-Pitts Neuron)
2020/04/27 Peceptron模型, MCP模型的进化(就我个人来说, 少了Not Function的定义而是用权重代替真是帮了大忙)
  • Q:Perceptron模型中的w0又被称为什么? 为什么? 假设有一个决策是否观看⚽️赛的模型, w0表达了什么真实含义?
  • Perceptron模型的优化体现在哪?
  • 根据定义y=1 if sum([wi*xi for i from (1, n)]) >= theta 怎么写出or(x1, x2)的线性不等式系统?
  • 多项式和线性方程组的区别?
  • 为什么要引入sigmoid函数以代替threshold? sigmoid函数的最终输出不再是是非({0, 1})而是什么?
  • 怎么理解Inhibitory input和Excitatory input?模型
Perceptron Learning Algorithm: A Graphical Explanation Of Why It Works
2020/04/28 又是perceptron模型, 但是这篇讲的是实际算法。 大概是这样的逻辑: 因为perceptron模型的性质, 我们可以将它理解成向量点积, 结果以0为分界线, 因为模型的实际输出y就是根据0来分界的, 因为向量点积用空间几何来理解的话就是,向量a在向量b方向上能跑多远–数值越小就代表几乎垂直。 假设有一组输入(空间向量), 每个输入都有label表示自己的属性是Positive还是Negative, 通过不断地调整, 收敛weights向量逼近分界线。 一些阅读问题:
  • perceptron的模型, 可以说是vector w和x的点积, 以dot(w, x) = 0 (也就是垂直)为分界线, 根据intuion, 对于label为1和0的输入, 向量w分别要满足什么角度关系?
  • 通过不断收敛我们最终得到的是什么? 是一条分割所有P和N向量的分界线吗? 如果不是, 那最终的结果是什么?
  • 向量加法在空间中意味着什么?
  • 两个向量在满足什么样的角度关系时点积大于0, 什么时候小于0?
  • 手写perceptron算法伪代码?
  • 给定向量a, 可以马上给出与之垂直的向量b吗?
  • Perceptron Learning algorithm算法中的终止条件是什么?
  • 怎么把图片声音等转化为vector?
Single-layer Neural Networks (Perceptrons)
2020/04/29 单层神经网络实际上就是Perceptron, 只不过可以有多个输出, 实际上意味着同一坐标系下的多分类
  • 什么是XOR函数?
  • 最基本的用电路实现的逻辑门是什么? XOR是怎么用电路实现的?
  • numpy array和普通的array有什么区别? data[labels == 1, :]是什么意思?
  • Numpy的主要object是什么? homogeneous的特性是什么。 怎么理解?
    • 的element-wised product和 @ 的matrix pruduct有什么区别?
  • 多维vector的点积结果是? 比如(a, b, c), (d, e)
  • make uninstall和make clean分别的作用是什么? uninstall是一直可以生效的吗? 为什么需要包管理器?
  • logistic regression是最简单的神经网络吗? 是perceptron模型怎样的改进?
  • 单层多神经元模型能解决什么问题?
  • 怎么将w向量画成boundary?
  • 证明XOR函数不可以用perceptron模型实现
  • 多组输出的模型怎么画?
  • 根据width, height, 两个输入画出Chari Bed Table三种物品的空间分布图, 并由此画出perceptron模型?
  • 多神经元的perceptorn模型实际上解决了什么问题?
Understanding Backpropagation Algorithm
2020/05/03 如果想知道我这这几天干什么去了, 那我会告诉你1号主要是在找反向传播的博客看, 结果是大部分的博客的介绍都不尊重历史时序, 反向传播是为了解决多层神经网络学习的问题而不是为了其他目的, 这是让人无法接受的误解, 所以说Deep Learning这本书也是令人诟病, 但是在1号下午我终于找到了这篇文章, 主要的内容就是介绍反向传播算法, 用的算法和解释都是正统的, 谢谢茄子。 所以一号和二号的半天都是在读这篇文章, 二号的研读因为partial derivative收到了阻碍, 所以我想了想, 就到可汗学院上看看partial derivative了。 三号的下午我醒悟过来。 拿着大概的multivariables derivative的知识继续读之前的文章, 然后在黄昏终于理解了。
  • 4层神经网络实际上是怎样的四层?
  • 为了理解这篇文章的内容, w_ij^l 是什么意思?
  • 什么是partial derivative?
  • 如果C = xw, x和w都是向量, Partial Derivation函数是PD, ,那么PD(C) / PD(x)的结果是什么?
  • 我们表示一个vector时。 通常用column还是row?
  • multivariables -> backpropagation -> MLP 这样的学习顺序对不对?
  • 什么是parametric curves, parametric surfaces和vector fields?
  • Multivariable 和 vector-valued function分别指的是什么样的函数?
  • 怎么理解XOY上的[2 5]可以写成2hat(i) + 5hat(j)的形式?
  • 怎么理解calculus两大基本主题中的integral?
  • 在From time 2 Location的例子里, 导数反映了什么?
  • 龙骑士07的作品牛逼在哪里?
  • w -> z -> C 怎么用chain rule来理解?
    模型示意图
  • 怎么推导PD(C)/PD(w_ij^l)?
  • 每增加一层, 进行gradient计算时, 相当于给哪个变量增加了次方?
  • Chain Rule是怎样推导出来的?

Multilayer Perceptrons
2020/05/04 尝试手动实现一个XOR函数来理解双层模型到底是做了一个什么样的操作,这才发现一个严重的问题: 线性层的叠加跟单层是一样的,没办法做出非线性操>作。醒悟过来之后就开始找答案,最后找到了这篇文章,谷歌万岁。总的来说这个问题的答案是非线性函数activative才是关键。明天会将前面4篇先全部读完。下面是例行问题

  • 为什么需要not-fully connected layers?
  • 能不能手写演算一个2 layers模型?
  • 为什么多层神经网络能够有非线性输出?就我摸的情况来看所有wb都是固定的,那
    么化简之后也不会得到高次方之类的东西,那么最后也还是线性的才对?
  • Threshold就能解决所恶友非线性分类问题吗?
  • 经过threshold之后的分界线长什么样? 可以画图出来吗?(这个用坐标变换来解
    释)
  • 2层2神经元的极限在哪里?增加隐藏神经元增加了什么自由度?
  • 输出层同时响应问题怎么解决?通过threshold跟weights能够获得独一无二的输吗?
  • 深层的layer表达了什么?
  • Threshold函数的derivative是什么?
  • 我是不是应该系统上一遍课程? 多伦多那个课程或者couorsera上面?
  • 我线性回归线性2分逻辑回归的unit区别在哪里?
  • 手写数字识别重的oriented-edge是啥?
  • 为什么说n个binary input 会有2^n种组合?
  • 如何理解lecture5重universility的例子? 如何理解universal approximation theorem?
  • 为什么说threshold函数无法用于自主学习?
  • 为什么说更深层的网络能够表达的更加简洁?
  • 我怎么理解每一层compute一个函数,所以整个网络是一串函数的组合?
  • 如何理解layer的递进式坐标的代换?
  • 如何从坐标代换和线性分割的角度分析XOR函数?