激活函数二三事
本篇主要来复习一下关于激活函数的一些知识,其中包括激活函数的定义,作用,发展历程以及不同激活函数的优缺点与适用范围。
什么是激活函数激活函数(activation function)又称非线性映射函数或是隐藏单元,是神经网络中中最主要的组成部分之一。 “激活”这个名字来自于生物上的神经网络结构。 我们知道,人工神经网络最初是受到生物上的启发,设计出了神经元这种单位结构,在每个神经元中,需要一个“开关”来决定该神经元的信息是否会被传递到其相连的神经元去,这个“开关”在这里也就是激活函数。
那么为什么要设计这样一个激活函数呢?我们举例来说,通常一个两层的简单的全连接神经网络(MLP)可以写成(省略偏置项):
y=\sigma_2(W_2\sigma_1(W_1x))其中$\sigma$为激活函数,$W$为参数,$x,y$分别为输入和输出。如果我们将激活函数去掉,那么这个两层的MLP就变成$y=W_2W_1x$,显而易见的,这个两层的神经网络就退化为一个单层的线性网络。 如果没有激活函数的非线性来赋予神经网络表达能力,那么无论多少层的网络结构都可以用一个单层网络来代替。 ...
【翻译】如何写出一篇优秀的研究论文
这篇内容是写论文之前看的一份Simon Peyton Jones的talk对应的幻灯片,原文可以点这里查看。因为解决了我写论文时遇到的许多疑惑,因此经原作者允许后,将其中文版本发布如下,作为备忘。完整的ppt可以点这里下载.
高级人工智能复习提纲
这份提纲是复习高级人工智能时做的一份知识点梳理,筛去了一些(我认为)没那么重要的知识。需要注意的是,这门课程每年都会有一些小的课程内容增减。这份大纲最好结合课程给的ppt来看,或者作为复习完了之后的回顾。
往年的样题会放在最前面,没有太多时间的话先把样题过一遍,按照题目去找知识点会快一些。
往年例题填空
为评估函数$f$的近似值$h$,常用的评价标准包括————,————和完备性;而因为计算的复杂性,我们无法计算$h$在所有数据上的误差,因此采用$h$在————上的平均误差来近似。
函数$y=f(x_1,x_2,…,x_n)$的所有自变量都是二值的,即$x_i\in {0,1}$,且$y\in {-1,0,1}$,这样不同的函数$f$有————个;监督学习问题的实例是指由某个特定的标记样本集所代表的学习问题,现在若仅知道标记样本训练集包括$m\le2^n$个数据,这样的问题实例有————个,$f$的近似值$h$的候选项可能有————种;$f$的最简单近似值$h$包括————个标量函数。
策略$\pi$的价值$V_\pi(s)$中$s$的意思是————,Q值$Q( ...
踩过的科研的一些坑
昨天提交了我真正意义上第一篇科研论文。这个项目大概去年十月份开始接触,十二月开始调研,接着遇上了考试月就放了放,然后本打算过年两周看看的,未果(我竟然还对放假能干正式抱有幻想。。)。寒假结束二月下旬开始全力做,本来打算投5月中下旬的NIPS,但是实在是进度赶不上,于是便改投了ICDM。
一路走来踩坑无数,想想还是复盘一下作为教训吧。没啥结构,想到哪儿算哪儿吧:
尽早开始接触数据写代码,不要在前期投入太多时间作为调研。 当然充分的调研是很重要的,尤其是你是第一次做该领域的工作时,需要看大量的文献。但是实践起来我发现在一开始就读太多的相关工作反而可能会有一些副作用,比如离数据太远无法充分理解问题,看的太杂迷失方向,或者是太容易受其他工作的影响而想不出一些很新的主义。 对问题的认识肯定是螺旋上升的,尽早开始写第一份代码也有助于之后调研的方向。
设计实验的时候一定要带有目的,不能仅仅看着对标的工作做什么实验。思考你的工作的特点和长处,设计出能够凸显这种特点的实验。
论文初稿写作时不要太在于语法和文法,先着重于捋顺逻辑。语法错误其实比较好改出来,也有一些自动化的软件可以做,也可 ...
Python序列拾遗 --流畅的python
最近看, 看完了第二章关于序列的内容,感觉补上了一些知识的漏洞,便归纳在此.
序列类型分类首先,python中的列表类型有很多种,一种常见的分类方法是将它们分为容器序列和扁平序列,它们的区别可以由一张表来表示:
容器序列
扁平序列
list,tuple,collections.deque
str, bytes, bytearray, memortyview, array.array
能够存放不同类型的数据
只能容纳一种类型
存放的是对象的引用
存放的是值
内存空间可以不连续
连续的内存空间
除了这种分类,还有一种常见的分类,即将他们分为可变序列和不可变序列. 可变序列包括list,bytearray,array.array,collections.deque, memoryview, 不可变序列包括tuple,str,bytes.
列表推导列表推导是一种常见的使用列表的方式, 常用来构建列表. 虽然它做的事情使用有map,filter组合的lambda表达式也都能做到,但是列表推导在可读性上有着很大的优势,例如:
1234numbe ...
读书月报1804
四月依旧很忙,而且由于经验不足而导致的种种失误,论文看来是赶不上NIPS的ddl了,希望五月能在论文上加点油,争取赶得上六月初的ICDM吧。本月读了三本书,全都是闲书,两本阿婆的侦探小说,还有一本郝景芳的中短篇集子。23日刚好是世界读书日,这次说好不买书的但是还是剁了5本心水很久的甲骨文丛书系列,另外kindle上也买了些,说起来kindle好久都没碰了呢。还是先上全家福吧:
鸽群中的猫这本书和以往看的波洛探案故事一个很大的不同是,当全书的篇幅过去了将近三分之二,我们的比利时侦探都没有上场,而且前面大量的篇幅在铺垫背景。在我的涉猎范围内,这还是阿婆第一次把国内外政治也牵扯进来,不知道当时是不是在讽刺什么。但是可以看的出的是,前面摊子铺的过大,后面的展开就有些有心无力了,许多情节上的线索也处理得不是很干净。
罗杰疑案此案中的波洛已经是个退休的老头,和黑斯廷斯天各一方,而阿婆选择了一名乡村医生作为另一个第一人称叙事者。这一视角无疑是极妙的混淆读者视线的一招,最后侦探即是凶手的反转也颇为好看。
孤独深处郝景芳的短篇中篇集,除却末尾和中间大概三四篇完全就是凑篇幅的文章不算,其他的 ...
读书月报1803
三月份虽然是异常的忙,因为要赶五月份的NIPS所以论文和实验一直在推进,因此也没有太多心思看比较“重”的书,但是看了不少侦探小说来调剂一下脑子。先放三月书单的全家福:
ABC 谋杀案阿婆的作品,背景设置得很奇诡,按照字母表顺序展开的连环杀人案。结局虽然出乎意料之外,但是其实不太合情理。 设置了一个精神病人来做替罪羔羊,总让我想起由于某局的规定国产恐怖片到最后揭开谜底时都是一个精神病人自己吓自己。在阿婆的作品里应该不算特别好的了。
白金数据东野圭吾的作品,其实最近挺想看他的新作的,但是手头书还多,就先不买来吃灰了吧。这次作品的背景来到了未来,有点科幻的意思,以侦破案件为线索,初看你以为主要探讨的是数据隐私和政府权力的问题(利用全民的隐私数据有利于侦破案件维护社会安定,但是也增长了政府的手),直到最后才发现讨论的是权贵与平民的“数据不平等”,这种不平等并不是数据科学的进步带来的,数据科学确实可以加剧这种不平等。在未来,如果高位者太容易获取低位者的数据,无疑会减少阶级流动性,使固化更为严重,这个问题其实很值得从业者思考,当今的“大数据”都意味集中,而信息的集中往往也代表垄断和信息不 ...
tensorflow中的shape的不完全指南
最近做实验, 因为tensorflow中Tensor的shape的问题大伤脑筋,特别是自己实现的较为复杂的网络层,例如对输入加一个RBF核,或者图卷积等等复杂的操作都需要写代码时对整个流程中tensor的shape有一定把握。否则就很容易遇到error或者bug。下面就将tf中的shape好好梳理一下。文中代码在Github上,用jupyter notebook打开。
12import numpy as npimport tensorflow as tf
静态与动态tf中的每个tensor都有两种shape,一种是静态(static)shap,一种是动态(dynamic)shape。 静态形状是由我们的操作推断出的形状(inferred),而动态形状是运行时真实的形状。稍微熟悉tf的同学可能会发现,tf中提供了两个获取tensor形状的函数,一个是tf.Tensor.get_shape,另一个就是tf.shape,这两个函数就和两种shape一一对应,get_shape用于获取静态shape,而tf.shape用来获取动态信息。下面我们来看个例子:
123456x = t ...
Coursera 深度学习课程笔记 Deep Learning
大概总共花了一个半月的时间来刷完coursera上Andrew Ng这门Deep learning。基本上年前期末考试后就开始,寒假中由于生病也没有继续,开学到了学校才捡起来,总共5门子项设定了16周的课程学习时间,其实如果心无旁骛+有点基础地刷的话20天也能刷完了。总的来说这门课课程设置还是较为科学,虽然感觉RNN部分有些烂尾,但是瑕不掩瑜。主要优点有:
涉及范围广 除开基础的入门外, 常用的CNN和RNN都介绍了,再加上一点GAN的内容的话就能把大部分应用场景都覆盖了.
框架明晰 这里指的是没用引入太多繁杂的细节, 对于入门者来说最常见的一个问题就是过早陷入纷繁的细节而不见枝干. 这门课就先把枝枝叶叶都先去掉, 数学推导略过了很多, 有助于把握深度学习整体的框架.
注重实践 实验设置应该是一个亮点, 和上面说的一样, 基本上代码都是填空题, 这就避免了初学者陷入实现上的困难而着重于理解算法.实验中还引入不少业界常见的问题, toy data也都很有趣.
不过内容还是有些浅了, 等手头工作的ddl结束还是要好好把Goodfellow那本书过一遍.
下 ...
CNN 中的等变(equivariant)和不变(invariant)
看一篇有关CNN on Graph的论文时遇到了两个看上去很像的名词——equivariant和invariant, 对这二者有些不太明白,因此一番谷歌后总算弄清楚些。
等变性 equivariant通俗解释: 对于一个函数,如果你对其输入施加的变换也会同样反应在输出上,那么这个函数就对该变换具有等变性。更严谨些:对于一个函数/特征$f$以及一个变换$g$, 如果我们有:
f(g(x)) = g(f(x))则称$f$对变换$g$有等变性。举一个例子,假设我们的变换$g$是将图像向右平移一段距离,我们的函数$f$是检测一个人脸的位置(比如说输出坐标),$f(g(x))$就是先将图片像右移,接着我们在新图较之原图偏右的位置检测到人脸; $g(f(x))$则是我们先检测到人脸, 然后再将人脸往右移一点。这二者的输出是一样的,与我们施加变换的顺序无关。
不变性 invraiant通俗解释: 对于一个函数,如果对其输入施加的某种操作丝毫不会影响到输出,那么这个函数就对该变换具有不变性。更严谨些:假设我们的输入为$x$,函数为$f$, 此时我们先对输入做变换$g$: $g(x) ...