复杂网络基础2(复杂网络基础理论答案)
本篇文章给大家谈谈复杂网络基础2,以及复杂网络基础理论答案对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
AI面试题第二弹(神经网络基础)
提取主要特征,减小网络参数量,减小计算量
层层传递的梯度1 梯度爆炸
层层传递的梯度1 梯度消失
与权重有很大关系,激活函数的影响较小。
每次训练一层隐节点,训练时将上一层隐节点的输出作为输入,而本层隐节点的输出作为下一层隐节点的输入,此过程就是逐层“预训练”(pre-training);在预训练完成后,再对整个网络进行“微调”(fine-tunning)。Hinton在训练深度信念网络(Deep Belief Networks中,使用了这个方法,在各层预训练完成后,再利用BP算法对整个网络进行训练。
这个方案主要是针对梯度爆炸提出的,其思想是设置一个梯度剪切阈值,然后更新梯度的时候,如果梯度超过这个阈值,那么就将其强制限制在这个范围之内。这可以防止梯度爆炸。
比较常见的是l1l1l1正则,和l2l2l2正则,在各个深度框架中都有相应的API可以使用正则化
反向传播中,经过每一层的梯度会乘以该层的权重。
举个简单例子:
为了得到一致***设而使***设变得过度复杂称为过拟合(overfitting), 过拟合表现在训练好的模型在训练集上效果很好,但是在测试集上效果差 。也就是说模型的泛化能力弱。
过拟合主要由两个原因造成,数据集太小或模型太复杂
(1). 数据集扩增(Data Augmentation)
(2). 改进模型
·Early Stopping。在模型效果比较好的时候便提前停止训练
·正则化(regularization)
L1:稀疏参数
L2:更小参数
·Dropout
·多任务学习
深度学习中两种多任务学习模式:隐层参数的硬共享和软共享
硬共享机制是指在所有任务***享隐藏层,同时保留几个特定任务的输出层来实现。硬共享机制降低了过拟合的风险。多个任务同时学习,模型就越能捕捉到多个任务的同一表示,从而导致模型在原始任务上的过拟合风险越小。
软共享机制是指每个任务有自己的模型,自己的参数。模型参数之间的距离是正则化的,以便保障参数相似性。
见后文
leaky relu
输入是x输出是y,正常的流程是:我们首先把x通过网络前向传播,然后把误差反向传播以决定如何更新参数让网络进行学习。使用Dropout之后,过程变成如下:
(1)首先随机(临时)删掉网络中一半的隐藏神经元,输入输出神经元保持不变(图中虚线为部分临时被删除的神经元)
(2) 然后把输入x通过修改后的网络前向传播,然后把得到的损失结果通过修改的网络反向传播。一小批训练样本执行完这个过程后,在没有被删除的神经元上按照随机梯度下降法更新对应的参数(w,b)。
(3)然后继续重复这一过程:
恢复被删掉的神经元(此时被删除的神经元保持原样,而没有被删除的神经元已经有所更新)
从隐藏层神经元中随机选择一个一半大小的子集临时删除掉(备份被删除神经元的参数)。
对一小批训练样本,先前向传播然后反向传播损失并根据随机梯度下降法更新参数(w,b) (没有被删除的那一部分参数得到更新,删除的神经元参数保持被删除前的结果)。
不断重复这一过程。
没有对数据进行归一化
忘记检查输入和输出
没有对数据进行预处理
没有对数据正则化
使用过大的样本
使用不正确的学习率
在输出层使用错误的激活函数
网络中包含坏梯度
初始化权重错误
过深的网络
隐藏单元数量错误
网络设计不合理(任务-网络不匹配)
机器学习有个很重要的***设:就是***设训练数据和测试数据是满足独立同分布的,这保障了通过训练数据获得的优秀模型也能够在测试集获得好的效果。但是在机器学习训练中输入层的每个批量(X,Y)中X的分布是不一致的,并且神经网络的隐藏层的输入分布在每次训练迭代中发生变化。 BatchNorm就是在深度神经网络训练过程中使得每一层神经网络的输入保持相同分布的。
BN的基本思想其实相当直观:因为深层神经网络在做非线性变换前(激活前)的 输入值 (就是那个x=WU+B,U是输入) 随着网络深度加深或者在训练过程中,其分布逐渐发生偏移或者变动,之所以训练收敛慢,一般是整体分布逐渐往非线性函数的取值区间的上下限两端靠近 (对于Sigmoid函数来说,意味着激活输入值WU+B是大的负值或正值),所以这 导致反向传播时低层神经网络的梯度消失 ,这是训练深层神经网络收敛越来越慢的 本质原因 , 而BN就是通过一定的规范化手段,把每层神经网络任意神经元这个输入值的分布强行拉回到均值为0方差为1的标准正态分布 ,其实就是把越来越偏的分布强制拉回比较标准的分布,这样使得激活输入值落在非线性函数对输入比较敏感的区域,这样输入的小变化就会导致损失函数较大的变化,意思是 这样让梯度变大,避免梯度消失问题产生,而且梯度变大意味着学习收敛速度快,能大大加快训练速度。
但是接下来的问题是:如果都通过BN,那么不就跟把非线性函数替换成线性函数效果相同了,意味着网络的非线性表达能力下降了, 所以BN为了保证非线性的获得,对变换后的满足均值为0方差为1的x又进行了scale加上shift操作(y=scale*x+shift), 每个神经元增加了两个参数scale和shift参数,这两个参数是通过训练学习到的,意思是通过scale和shift把这个值从标准正态分布左移或者右移一点并长胖一点或者变瘦一点,每个实例挪动的程度不一样,这样等价于激活前的值经过标准正太分布归一化后再从正中心周围的线性区往非线性区动了动。核心思想应该是想找到一个线性和非线性的较好平衡点,既能享受非线性的较强表达能力的好处,又避免太靠非线性区两头使得网络收敛速度太慢
Batch Normalization 好处:(1)提高了训练速度,收敛速度也大大加快(2)另外调参过程也简单多了,对于初始化要求没那么高,而且可以使用大的学习率等 (3)可以防止梯度消失(4)BN类似于Dropout的一种防止过拟合的正则化表达方式,可以有效防止过拟合,不用太依赖dropou和正则化
以下情况最好不要使用BN:(1)数据不平衡(2)batch_size太小
batch_size是机器学习中的一个重要参数,决定了梯度下降的方向,如果数据集比较小,完全可以***用全数据集的形式计算梯度,由全数据集确定的梯度方向能够更好地代表样本总体,从而更准确地朝向极值所在的方向。对于大型数据集则需要使用mini-batch_size,因为随着数据集的海量增长和内存限制,一次性载入所有的数据进来变得越来越不可行。
当batch_size=1,即在线学习,模型难以达到收敛 。
合理增加batch_size好处 :
(1)内存利用率提高了,大矩阵乘法的并行化效率提高
(2)跑完一次 epoch(全数据集)所需的迭代次数减少,对于相同数据量的处理速度进一步加快。
(3)在一定范围内,一般来说 Batch_Size 越大,其确定的下降方向越准,引起训练震荡越小
盲目增大 Batch_Size 坏处 :
(1)内存利用率提高了,但是内存容量可能撑不住了
(2)跑完一次 epoch(全数据集)所需的迭代次数减少,要想达到相同精度所需要的 epoch 数量越来越多,花费的时间越长
(3)大的batchsize收敛到sharp minimum,而小的batchsize收敛到flat minimum,后者具有更好的泛化能力。
总之batchsize在变得很大(超过一个临界点)时,会降低模型的泛化能力。在这个临界点之下,模型的性能变换随batch size通常没有学习率敏感
目标所在的真实框(ground truth) 与算法预测的目标所在的框(bounding box)的交集与并集的比值,我们会用IOU阈值来判定预测的bounding box是否有效。一般阈值会设定在0.5,当IOU的值大于等于0.5时,我们会把这个预测的bounding box 归为正类,而小于0.5的归为负类。
牛顿法使用的是目标函数的二阶导数,在高维情况下这个Hessian(n*n维度)矩阵非常大,计算复杂度是n*n,计算和存储都是问题
(1) 通过控制卷积核个数实现升维或者降维,从而减少模型参数和计算量
(2) 用于不同channel上特征的融合
(3)1x1的卷积相当于全连接层的计算过程,并且加入了非线性激活函数,从而增加了网络的非线性,使得网络可以表达更加复杂的特征。
它能够把输入的连续实值变换为0和1之间的输出,如果是非常大的负数,那么输出就是0;如果是非常大的正数,输出就是1
缺点:
(1)函数的饱和区,导致梯度几乎为0,造成梯度消失问题
(2)Sigmoid 的 output 不是0均值,具体解释见
(3)其解析式中含有幂运算,计算机求解时相对来讲比较耗时。对于规模比较大的深度网络,这会较大地增加训练时间。
它解决了Sigmoid函数的不是零均值输出问题,然而,梯度消失(gradient vanishing)的问题和幂运算的问题仍然存在。
(1)在正区间解决了梯度消失的问题
(2)函数简单,计算速度快,收敛速度远快于sigmoid和tanh
缺点:
(1)Relu函数输出不是0均值
(2)神经元坏死问题:指的是某些神经元可能永远不会被激活,导致相应的参数永远不能被更新,有两个主要原因导致这种状况发生
(1) 非常不幸的参数初始化,这种情况比较少见
(2) learning rate太高导致在训练过程中参数更新太大,不幸使网络进入这种状态。解决方法是可以***用X***ier初始化方法,以及避免将learning rate设置太大或使用adagrad等自动调节learning rate的算法
为了解决ReLU函数带来的神经元坏死问题 , 提出了将ReLU的前半段设为αx,α通常设为0.01,,另外一种直观的想法是基于参数的方法PReLU函数, α可由方向传播算法学习出来。
ELU也是为解决ReLU存在的问题而提出,显然,ELU有ReLU的基本所有优点,以及:(1)不会有神经元坏死现象(2)函数输出均值接近于0
但是ELU的小问题就是计算量稍微有点大。
1、使用不同的激活函数,比如Relu,Leak-Relu,PRelu,elu等激活函数代替sigmoid函数
2、使用Batch Normalizaion(批量归一化)
3、使用残差网络
4、预训练加微调
1、梯度裁剪
2、权重正则化
两个3x3的卷积核的感受野比5x5的卷积核的感受野大,在保持相同感受野的同时,用3x3的卷积核可以提升网络的深度,可以很明显的减少计算量。
1、局部连接
2、权值共享:减小参数量
3、池化操作:增大感受野
4、多层次结构:可以提取low-level以及high-level的信息
1、数据集太小,数据样本不足时,深度学习相对其它机器学习算法,没有明显优势。
2、数据集没有局部相关特性,目前深度学习表现比较好的领域主要是图像/语音/自然语言处理等领域,这些领域的一个共性是局部相关性。图像中像素组成物体,语音信号中音位组合成单词,文本数据中单词组合成句子,这些特征元素的组合一旦被打乱,表示的含义同时也被改变。对于没有这样的局部相关性的数据集,不适于使用深度学习算法进行处理。举个例子:预测一个人的健康状况,相关的参数会有年龄、职业、收入、家庭状况等各种元素,将这些元素打乱,并不会影响相关的结果。
作用 :对输入的特征图进行压缩,
一方面使特征图变小,简化网络计算复杂度;
一方面进行特征压缩,提取主要特征。
通常来讲,max-pooling的效果更好,虽然max-pooling和***erage-pooling都对数据做了下***样,但是 max-pooling感觉更像是做了特征选择,选出了分类辨识度更好的特征,提供了非线性 。 pooling的主要作用一方面是去掉冗余信息,一方面要保留feature map的特征信息,在分类问题中,我们需要知道的是这张图像有什么object,而不大关心这个object位置在哪,在这种情况下显然max pooling比***erage pooling更合适。在 网络比较深的地方,特征已经稀疏了,从一块区域里选出最大的,比起这片区域的平均值来,更能把稀疏的特征传递下去 。
***erage-pooling更强调对整体特征信息进行一层下***样,在减少参数维度的贡献上更大一点,更多的体现在 信息的完整传递这个维度 上,在一个很大很有代表性的模型中,比如说DenseNet中的模块之间的连接大多***用***erage-pooling,在减少维度的同时,更有利信息传递到下一个模块进行特征提取。
***erage-pooling在 全局平均池化操作 中应用也比较广,在ResNet和Inception结构中最后一层都使用了平均池化。有的时候在模型接近 分类器的末端使用全局平均池化还可以代替Flatten操作 ,使输入数据变成一位向量。
CNN网络中另外一个不可导的环节就是Pooling池化操作,因为Pooling操作使得feature map的尺寸变化,***如做2×2的池化(步长也为2),***设那么第l+1层的feature map有16个梯度,那么第l层就会有64个梯度,这使得梯度无法对位的进行传播下去。其实解决这个问题的思想也很简单,就是把1个像素的梯度传递给4个像素,但是需要保证传递的loss(或者梯度)总和不变。根据这条原则,mean pooling和max pooling的反向传播也是不同的
mean pooling的前向传播就是把一个patch中的值求取平均来做pooling,那么反向传播的过程也就是把 某个元素的梯度等分为n份分配给前一层,这样就保证池化前后的梯度(残差)之和保持不变 ,图示如下 :
(2) max pooling
max pooling也要满足梯度之和不变的原则 ,max pooling的前向传播是把patch中最大的值传递给后一层,而其他像素的值直接被舍弃掉。那么 反向传播也就是把梯度直接传给前一层某一个像素,而其他像素不接受梯度,也就是为0。 所以max pooling操作和mean pooling操作不同点在于需要记录下池化操作时到底哪个像素的值是最大,也就是max id,这个变量就是记录最大值所在位置的,因为在反向传播中要用到,那么***设前向传播和反向传播的过程就如下图所示 :
28、细粒度分类
29、LSTMRNN
30、解释LSTM结构(相对于RNN)的好处
31、RNN的梯度消失原因和解决办法
32、Object Detection
33、Unet的介绍
34、FCN和Unet的区别
35、RCNN系列的算法流程和区别
36、Fast RCNN中 bbox 回归的损失函数什么
37、解释 ROI Pooling 和 ROI Align
38、Mask RCNN中 mask branch 如何接入 Faster RCNN中
39、解释 FPN
40、解释 ROI Align
41、简述 YOLO 和 SSD
42、简述 Hough 直线检测、Sobel 边缘检测算法流程
43、Mask RCNN中的anchors如何判定为正负样本
44、简述 NMS 算法流程
45、attention起源是用在哪里?pixel还是frame,是soft还是hard
46、anchor的正负样本比是多少
47、算法和激活函数等
48、BN的原理和作用
49、BN层反向传播,怎么求导
50、BN 的作用和缺陷,以及针对batch_size小的情况的改进(GN)
51、BN层,先加BN还是激活,有什么区别
52、手推BP
53、优化算法举例和他们的区别(SGD、SGDM、RMSprop、Adam)
54、随机梯度下降和梯度下降
55、训练不收敛的原因有哪些
56、简述 SVM 流程、核函数寻参及常见的核函数举例
57、batch_size 和 learning rate 的关系(怎么平衡和调整二者)
58、解释过拟合和欠拟合,以及解决方法
59、激活函数有哪些,各自区别
60、损失函数有哪些
61、Sigmoid 和 ReLu 对比(各自优缺点)
62、为什么不用sigmoid而用relu?做出了哪些改进?
63、梯度消失和梯度爆炸的原因和解决方法
64、Precision 和 Recall 的定义
65、精确率高、召回率低是为什么
66、SVM,线性回归和逻辑回归的原理及区别
67、PCA原理,PCA和SVD的区别和联系
68、正则化怎么选择,有哪些方式
69、L1、L2范数,区别
70、boost、Adaboost
71、dropout和batch normalization
72、讲一下决策树和随机森林
73、讲一下GBDT的细节,写出GBDT的目标函数。 GBDT和Adaboost的区别与联系
74、偏差、方差
75、距离度量公式哪些,区别
76、多标签识别怎么做
77、data argumentation怎么处理的
78、数据不均衡怎么处理、只有少量带标签怎么处理
79、权重初始化方法都有哪些
80、权值衰减这个参数怎么设置
81、分类问题有哪些评价指标?每种的适用场景。
82、无监督学习了解哪些
83、图像处理Opencv
84、边缘检测算子有哪些
85、霍夫变换
86、直方图是什么
87、canny算子是怎么做的
88、图像的特征提取有哪些算法,适用范围、优缺点
参考:
28 张图详解网络基础知识:OSI、TCP/IP 参考模型(含动态图)
目录
1、网络协议
其实协议在我们生活中也能找到相应的影子。
举个例子,有 2 个男生准备追求同一个妹子,妹子来自河南,讲河南话,还会点普通话;一个男生来自胡建,讲闽南语,也会点普通话;另一个男生来自广东,只讲粤语;
协议一致,沟通自如
语言不通,无法沟通
你们猜猜?最后谁牵手成功了?答案肯定是来自胡建的那位,双方可以通过 普通话 进行沟通,表达内容都能理解。而来自广东的帅哥只会讲粤语,不会普通话,妹子表示听不懂,就无法进行沟通下了。
每个人的成长环境不同,所讲的语言、认知、理解能力也就不同。为了使来自五湖四海的朋友能沟通自如,就需要大家协商,认识某一个语言或规则,彼此能互相理解,这个语言就是普通话。
通过这个例子,大家可以这样理解:
把普通话比作“协议”、把聊天比作“通信”,把说话的内容比作“数据”。
相信这样类比,大家就知道,协议是什么了?
简单地说,就是程序员指定一些标准,使不同的通信设备能彼此正确理解、正确解析通信的内容。我们都知道计算机世界里是二进制,要么 1,要么 0,那为啥可以表达丰富多彩的内容呢?
也是因为协议,不同字段,不同组合,可以解析不同意思,这就依然协议,让协议来正确处理。
例如,我们使用手机连 WiFi 来刷抖音,使用的是 802.11(WLAN)协议,通过这个协议接入网络。如果你所连的 WIFI 是不需要手动设置 IP 地址,是通过自动获取的,就使用到了 DHCP 协议,这样你的手机算上接入了 局域网, 如果你局域网内有台 NAS 服务器,存放了某些不可描述的******,你就可以访问观看了,但这时你可能无法访问互联网***,例如,你还想刷会抖音,看看妹子扭一扭,结果出现如下画面:
出现这种画面,说明无法使用 互联网, 可能是无线路由器没有设置好相关协议,比如: NAT、PPPoE 协议(上网账号或密码设置错误了),只有设置正确了,就可以通过运营商(ISP)提供的线路把局域网接入到互联网中,实现手机可以访问互联网上的***(服务器)。玩微信撩妹子、刷抖音看妹子。
网络协议示意图
延伸阅读
1、局域网:最显著的特点就是范围有限,行政可控的区域可以是一所高校、一个餐厅、一个园区、一栋办公楼或一个家庭的私有网络。
2、城域网:原本是介意局域网和广域网之间,实际工作中很少再刻意去区分城域网和广域网了,所以这边不再介绍。
3、广域网:简单说就是负责把多个局域网连接起来,它的传输距离长距离传输,广域网的搭建一般是由运营商来。
4、互联网:把全世界上提供***共享的 IT 设备所在网络连接起来,接入了互联网就可以随时随地访问这些***了。
5、物联网:把所有具有联网功能的物体都接入互联网就形成了物联网。如空调联网,就可以远程控制空调; 汽车 联网,就可以远程获取行程数据。
总结一下吧!我们可以把电脑、手机等 IT 设备比喻做来自五湖四海的人们,大家都通过多种语言(网络协议)实现沟通(通信)。所有人要一起交流,就用普通话,大家都能理解。所有胡建人在一起,就用闽南语进行沟通,彼此也能理解。这么的方言,就好比计算机网络世界里也有这么多协议,只是不同协议用在不同地方。
好奇的同学,可能就会问,那网络协议是由谁来规定呢?这就需要提到一个组织,ISO。这个组织制定了一个国际标准 ,叫做 OSI 参考模型,如下,很多厂商都会参考这个制定网络协议。
OSI 参考模型图
2、OSI 参考模型
既然是模型,就好比模范一样,大家都要向它学习,以它为原型,展开学习研究。前面我们也提到了一些协议,这么多协议如果不进行归纳,分层,大家学习起来是不是感觉很凌乱?
所以 OSI 参考模型就是将这样复杂的协议整理并进行分层,分为易于理解的 7 层,并定义每一层的 服务 内容,协议的具体内容是 规则 。上下层之间通过 接口 进行交互,同一层之间通过 协议 进行交互。相信很多网络工程师在今后工作中遇到问题,讨论协议问题还会用到这个模型展开讨论。所以说,对于计算机网络初学者来说,学习了解 OSI 参考模型就是通往成功的第一步。
OSI 参考模型分层功能
7.应用层
为应用程序提供服务并规定应用程序中通信相关的细节,OSI 的最高层。包括文件传输、Email、远程登录等协议。程序员接触这一层比较多。
应用层示例图
6.表示层
主要负责数据格式的转换,为上下层能够处理的格式。如编码、加密、解密等。
表示层示例图
5.会话层
即负责建立、管理和终止通信连接(数据流动的逻辑通路),数据分片、重组等传输的管理。
会话层示例图
4.传输层
保证可靠传输,不需要再路由器上处理,只需再通信双方节点上进行处理,如处理差错控制和流量控制。
传输层示例图
3.网络层
主要负责寻址和路由选择,将数据包传输到目的地。
网络层示例图
2.数据链路层
负责物理层面上互连、节点之间的通信传输,将0 、 1 序列比特流划分为具有意义的数据帧传输给对端。这一层有点类似网络层,网络层也是基于目的地址来传输,不同是:网络层是将数据包负责在整个网络转发,而数据链路层仅是在网段内转发,所以大家抓包会发现,源目 MAC 地址每经过一个二层网段,都会变化。
数据链路层示例图
1.物理层
负责 0、1 比特流(0、1 序列)与电压高低电平、光的闪灭之间的互相转换,为数据链路层提供物理连接。
物理层示例图
OSI 为啥最后没有得到运用呢?其实最主要的原因,是 OSI 模型出现的比 tcp/ip 出现的时间晚,在 OSI 开始使用前,TCP/IP 已经被广泛的应用了。如果要换成 OSI 模型也不太现实。其次是 OSI 是专家们讨论,最后形成的,由于没有实践,导致该协议实现起来很复杂,很多厂商不愿意用 OSI,与此相比,TCP/IP 协议比较简单,实现起来也比较容易,它是从公司中产生的,更符合市场的要求。综合各种因素,最终 OSI 没有被广泛的应用。
下面我们来看看 TCP/IP 与 OSI 分层之间的对应关系及相应的协议:
4.应用层
从上图,可以知道 TCP/IP 四层模型,把应用层、表示层、会话层集成再一起了,该层的协议有:HTTP 、 POP3 、 TELNET 、 SSH 、 FTP 、 SNMP 等。
目前,大部分基于 TCP/IP 的应用都是 客户端/服务端 架构。一般我们把提供***服务的那一侧叫服务端, 发起访问服务***的这一侧叫客户端。
应用层
3.传输层
主要职责就是负责两端节点间的应用程序互相通信,每个节点上可能有很多应用程序,例如,登录了微信,又打开了网页,又打开迅雷看看,那数据到达后怎么正确传送到相应的应用程序呢?那就需要 端口号 来正确识别了。传输层中最为常见的两个协议分别是传输控制协议 TCP (Tran***ission Control Protocol)和用户数据报协议 UDP (User Datagram Protocol)
面向连接 顾名思义,就是建立连接,什么时候建立连接呢?就是在通信之前需要先建立一条逻辑的通信链路。就跟我们平时打电话一样,得先拨通,通了之后即链路建立好了,这条链路只有你和对方可以在这条链路传播说话内容。挂电话后,这条链路也就断开了。
面向无连接 无连接,即通信之前不需要建立连接,直接发送即可。跟我们以前写信很像,不需要管对方在不在?直接写信寄过去就可以了。
面向连接传输
面向无连 接传输
2.网络层
主要职责就是将数据包从源地址发送到目的地址。
在网络传输中,每个节点会根据数据的 IP 地址信息,来判断该数据包应该由哪个接口(网卡)发送出去。各个地址会参考一个发出接口列表, MAC 寻址中所参考的这张表叫做 MAC 地址转发表 ,而 IP 寻址中所参考的叫做 路由表 。MAC 地址转发表根据自学自动生成。路由控制表则根据路由协议自动生成。MAC 地址转发表中所记录的是实际的 MAC 地址本身,而路由表中记录的 IP 地址则是集中了之后的网络号(即网络号与子网掩码)。
1.网络接口层
在 TCP/IP 把物理层和数据链路层集成为 网络接口层 。主要任务是将上层的数据封装成帧发送到网络上,数据帧通过网络到达对端,对端收到后对数据帧解封,并检查帧中包含的 MAC 地址。如果该地址就是本机的 MAC 地址或者是广播地址,则上传到网络层,否则丢弃该帧。
封装与解封装
所谓的封装,其实就跟你寄快递的时候,给物品加上纸盒包装起来或者快件到站点,快递员贴一层标签的过程。在网络上,就是上层的数据往下送的时候,下层会添加头部,不过,只有在二层,不仅会加上头部,还会在上层数据尾部添加 FCS。
封装
所谓解封装,就如同你收到快件一样,一层一层地拆外包装,直到看到快件。网络也是,一层一层地拆掉头部,往上层传送,直到看到数据内容。
解封装
我们把应用层的数据封装传输层头部后的报文,称为 段 ;
把段封装网络层头部后的报文,称为 包 ;
把包封装以太网头部和帧尾,称为 帧 。
网络基础知识
2018***免费下载
链接:
提取码:du9b
2018***|考前介绍.mp4|考前串讲2.mp4|考前串讲1.mp4|第9章 安全性知识-3.mp4|第9章 安全性知识-2.mp4|第9章 安全性知识-1.mp4|第8章 数据库技术-5.mp4|第8章 数据库技术-4.mp4|第8章 数据库技术-3.mp4|第8章 数据库技术-2☆.mp4|第8章 数据库技术-1.mp4|第7章 网络基础知识-3.mp4|第7章 网络基础知识-2.mp4|第7章 网络基础知识-1.mp4
如何运用机器学习解决复杂系统的预测问题
在市场这种系统里, 有两个关键要素, 一个是个体和个体之间的互相作用(博弈),一个是系统与外部环境(地球***)之间的相互作用(反馈),因此而形成复杂模式(Pattern), 这种模式通常很难预测。
而这种类型的系统我们通常定义为复杂系统: 由大量单元互相作用组成的系统, 由于集体行为的非线性(总体不等于个体之和), 而形成具备无数层级的复杂组织。或者称为涌现性。
复杂科学即研究复杂系统的一套联系不同尺度现象的数学方法。在人类试图理解那些和自身生存最相关的东西时,而经典物理学的还原论(把整体拆成部分)思维的却不适用。物理预测的核心方法是动力学方法, 即人们由实验出发抽象出引起运动改变的原因, 把这些原因量化为变量,用微分方程来描述, 从而取得对整个未来的精确解,如麦克斯韦方程组可以预测从光波的速度到磁线圈转动发电任何的电磁学现象。而你却无法通过了解市场上每个人的特性就很好的预测整个市场走势。
复杂系统难以预测的原理可以从以下几方面理解:
1, 高维诅咒: 构成现实生活的系统往往被大量未知变量决定, 比如生物由无数的细胞组成。 基因,是由无数独立的单元组成的, 市场, 由无数的交易者组成, 这些用物理的描述方法来预测, 就是极高维度空间的运动问题。维度,首先使得再简单的方程形式都十分复杂难解。
此处补充维度的科学定义: 维度是一个系统里可以独立变化的变量个数, 一个有非常多变量的系统,如复杂网络,***如每个变量不是互相独立,也可以是低维系统。 比如一个军营里的方阵,即使人数众多, 也会因为大家都做着一模一样的动作,而只有一个独立变量,成为一维系统。
2, 非线性诅咒:高维度系统的维度之间具有复杂的相互作用,导致我们不能把系统分解为单一维度然后做加法的方法研究。 高维加上非线性我们将得到对初级极为敏感的混沌系统。
非线性的一个重要推论是组织的产生, 因为非线性,1+1可以大于2或小于2, 为组织的产生提供了理论基础。
3, 反馈诅咒: 复杂系统中反馈无处不在, 即使是一个简单的一维系统, 反馈也可以使得系统的特性很丰富, 最典型的反馈是某种记忆效应, 使得系统产生复杂的路径依赖, 此刻你的现实与历史深刻关联,而关联方法导致复杂的模式产生。
反身性是一种由预测产生的特殊反馈, 当你预测股市的价格, 会引起你的交易策略变化从而影响你的预测, 是为反身性。
4, 随机诅咒: 复杂系统往往含有不包含确定规律的随机噪声,加上这些噪声, 系统的行为更加难预测, 而很多时候, 我们也无法区分一个系统里发现的模式是噪声导致还是由于元件之间的相互作用。
这四大诅咒是这些系统难以理解和预测的原因, 而这个时候, 复杂系统和机器学习的方***可以作为一种非常有力的手段帮我们从复杂性中挖掘模式。
第一种方法叫模型驱动(Model ***roch), 即想办法找到事物变化的原因, 用一种降维的思路列出微分方程, 即从非常繁复的要素中化简出最重要的一个或者两个, 从而化繁琐为简单,不管三七二十一先抓住主要矛盾。其中的范例便是非线性动力学。
注: 此处我们有两个基本***设让非线性动力学得到简化,一个是只讨论连续变量,另一个是不考虑系统内的随机性(无噪声项)。
1, 如果一个系统可以化简到一维, 那么你只需要研究其内部存在的反馈性质并描述它即可。 负反馈导致稳定定点产生, 正反馈导致不稳定性。 很多事物多可以抽象为一维系统,包括简单环境下的人口增长问题。
2, 如果一个系统可以化简到二维, 那么你需要研究两个维度间的相互作用,最终可以互为负反馈而稳定下来,互为正反馈而爆发,或者产生此消彼长的周期轨道。 比如恋爱中的男女是个二维系统, 互为负反馈就回到普通朋友, 互为正反馈在爱欲中爆发-比如罗密欧与朱丽叶, 此消彼长那是玩捉迷藏的周期游戏。
3, 如果一个系统是三维的, 则混沌可能产生。 混沌即对初值极为敏感的运动体系。 你一旦偏离既定轨道一点, 即几乎无法回去。
4, 如果一个系统大于三维, 那么你需要用一个复杂网络描述它的运动, 这个时候我们可以得到我们复杂系统的主角- collective phenomena emergence。 复杂网络的性质主要取决于单体间相互作用的方式, 以及系统与外界交换能量的方法, 这两者又息息相关。 最终我们得到涌现。
复杂网络的动力学往往混沌难以预测,对于高维混沌系统, 第一个方法也只能给出对事物定性的描述, 而我们可以祭出我们的第二种方法: 先不管数据背后错综复杂的动因,而是直接以数据驱动我们的预测。
这其中的哲学内涵即贝叶斯分析框架: 即先不预测, 而是列出所有可能的结果及根据以往知识和经验每种结果发生的可能性(先验概率),之后不停吸收新观测数据, 调整每种可能结果的概率大小(后验概率),将想得到的结果概率最大化(MAP)最终做出决策。
如果你把贝叶斯分析的框架自动化, 让电脑完成, 你就得到机器学习的最基本框架。
机器学习如果可以进入一个问题中, 往往要具备三个条件:
1, 系统中可能存在模式
2, 这种模式不是一般解析手段可以猜测到的。
3, 数据可以获取。
如果三点有一点不符,都很难运用机器学习。
机器学习的一个核心任务即模式识别, 也可以看出它和刚才讲的复杂系统提到的模式的关系。我们讲复杂系统难以通过其成分的分析对整体进行预测,然而由于复杂系统通常存在模式, 我们通常可以模式识别来对系统进行归类, 并预测各种可能的未来结果。比如一个投行女因为工作压力过大而***了, 那么在她之前的活动行为数据(比如点击手机的某些***的频率)里是否可能存在某种模式? 这种模式是否可以判定她之后的行为类型? 并且这个过程可否通过历史数据由计算机学习?如果都可以,这就是一个机器学习问题。
刚才讲的几大诅咒, 高维, 非线性, 复杂反馈,随机性也称为机器学习需要核心面对的几大困难, 由此得到一系列机器学习的核心算法。
机器学习在现实生活中被用于非常多的方面, 最常见的如商务洞察(分类,聚类, 推荐算法), 智能语音语义服务(时间序列处理,循环网络), 各种自动鉴别系统如人脸识别,虹膜识别 ,癌症检测(深度卷积网络), 阿尔法狗,机器人控制(深度强化学习算法)。 而由方***分, 又可以分成有监督学习, 无监督学习, 和强化学习。
在八月份的巡洋舰科技的《机器学习vs复杂系统特训课》中,我着重讲了几种机器学习的基本方法:
1. 贝叶斯决策的基本思想:
你要让机器做决策, 一个基本的思路是从统计之前数据挖掘已有的模式(pattern)入手, 来掌握新的数据中蕴含的信息。 这个pattern在有监督学习的例子里, 就是把某种数据结构和***设结论关联起来的过程,我们通常用条件概率描述。 那么让机器做决策, 就是通过不停的通过新数据来调整这个数据结构(特征)与***设结果对应的条件概率。通常我们要把我们预先对某领域的知识作为预设(prior),它是一个***设结果在数据收集前的概率密度函数,然后通过收集数据我们得到调整后的***设结果的概率密度函数, 被称为后验概率(posterior),最终的目标是机器得到的概率密度函数与真实情况最匹配, 即 Maximum a posterior(MAP), 这是机器学习的最终目标。
2, 朴素贝叶斯分类器到贝叶斯网络:
分类,是决策的基础,商业中要根据收集客户的消费特征将客户分类从而精准营销。 金融中你要根据一些交易行为的基本特征将交易者做分类。 从贝叶斯分析的基本思路出发我们可以迅速得到几种分类器。
首当其冲的朴素贝叶斯分类器,它是机器学习一个特别质朴而深刻的模型:当你要根据多个特征而非一个特征对数据进行分类的时候,我们可以***设这些特征相互独立(或者你先***设相互独立),然后利用条件概率乘法法则得到每一个分类的概率, 然后选择概率最大的那个作为机器的判定。
图: 朴素贝叶斯分类器的基本框架, c是类别, A是特征。
如果你要根据做出分类的特征不是互相独立,而是互相具有复杂关联,这也是大部分时候我们面临问题的真相, 我们需要更复杂的工具即贝叶斯网络。 比如你对某些病例的判定, 咳嗽, 发烧, 喉咙肿痛都可以看做扁条体发炎的症候, 而这些症候有些又互为因果, 此时贝叶斯网络是做出此类判定的最好方法。构建一个贝叶斯网络的关键是建立图模型 , 我们需要把所有特征间的因果联系用箭头连在一起, 最后计算各个分类的概率。
图:贝叶斯网络对MetaStatic Cancer的诊断,此处的特征具有复杂因果联系
贝叶斯分析结合一些更强的***设,可以让我们得到一些经常使用的通用分类器, 如逻辑斯提回归模型,这里我们用到了物理里的熵最大***设得到玻尔兹曼分布, 因此之前简单贝叶斯的各个特征成立概率的乘积就可以转化为指数特征的加权平均。 这是我们日常最常用的分类器之一。 更加神奇的是, 这个东西形式上同单层神经网络。
图: logistic函数,数学形式通玻尔兹曼分布, 物理里熵最大模型的体现
3, 贝叶斯时间序列分析之隐马模型:
贝叶斯时间序列分析被用于挖掘存储于时间中的模式,时间序列值得是一组随时间变化的随机变量,比如玩牌的时候你对手先后撒出的牌即构成一个时间序列。 时间序列模式的预设setting即马尔科夫链, 之前动力学模式里讲到反馈导致复杂历史路径依赖,当这种依赖的最简单模式是下一刻可能出现的状态只与此刻的状态有关而与历史无关, 这时候我们得到马尔科夫链。
马尔科夫链虽然是贝叶斯时间序列分析的基准模型,然而现实生活中遇到的时间序列问题, 通常不能归于马尔科夫链,却可以间接的与马尔科夫链关联起来,这就是隐马过程,所谓含有隐变量的马尔科夫过程。
图: 隐马过程示意
语音识别就是一类特别能利用隐马过程的应用, 在这里语音可以看做一组可观测的时间序列, 而背后的文字是与之关联的马尔科夫链, 我们需要从可观测的量, 按照一定的概率分布反推不可观测的量, 并用马尔科夫链的观点对其建模, 从而解决从语音到文字的反推过程。 当今的语音识别则用到下面紧接讲的深度学习模型。
4, 深度学习
刚刚讲的分类问题, 只能根据我们已知的简单特征对事物进行分类, 但***设我们手里的数据连需要提取的特征都不知道, 我们如何能够对事物进行分类呢? 比如你要从照片识别人名, 你都不知道选哪个特征和一个人关联起来。 没关系, 此时我们还有一个办法, 就是让机器自发学习特征, 因此祭出深度学习***。通常在这类问题里, 特征本身构成一个复杂网络,下级的特征比较好确定, 而最高层的特征, 是由底层特征的组合确定的, 连我们人类自己都不能抽象出它们。
深度学习即数据内涵的模式(特征)本身具备上述的多层级结构时候,我们的机器学习方法。 从以毒攻毒的角度看, 此时我们的机器学习机器也需要具有类似的多级结构,这就是大名鼎鼎的多层卷积神经网络。深度学习最大的优势是具有更高级的对“结构”进行自动挖掘的能力,比如它不需要我们给出所有的特征,而是自发去寻找最合适对数据集进行描述的特征。 一个复杂模式-比如“人脸” 事实上可以看做一个简单模式的层级叠加, 从人脸上的轮廓纹理这种底层模式, 到眼睛鼻子这样的中级模式, 直到一个独特个体这样最高级的复杂模式, 你只有能够识别底层模式,才有可能找到中级模式, 而找到中级模式才方便找到高级模式, 我们是不能从像素里一步到达这种复杂模式的。 而是需要学习这种从简单模式到复杂模式的结构, 多层网络的结构应运而生。
图: 从具体特征到抽象特征逐级深入的多级神经网络
6, RNN和神经图灵机
如果时间序列数据里的模式也包含复杂的多层级结构, 这里和我之前说的复杂系统往往由于反馈导致复杂的时间依赖是一致的, 那么要挖掘这种系统里的模式, 我们通常的工具就是超级前卫的循环神经网络RNN,这种工具对处理高维具有复杂反馈的系统有神效, 因为它本身就是一个高维具有复杂时间反馈的动力学系统。
图: 循环神经网络, 过去的信息可以通过循环存储在神经元之间
当一个复杂时间序列的问题里面, 每个时间点的信息都可以对未来以任何方式产生复杂影响, 那么处理这种复杂性的一个办法就是用循环神经网络,让它自发学习这种复杂结构。 比如一个城市里的交通流, 或者人与人之间的对话。
神经图灵机是在多层卷积神经网络或递归网络基础上加上一个较长期的记忆单元, 从而达到处理需要更复杂时间关联的任务, 比如对话机器人。 而神经图灵机最厉害的地方在于他可以通过机器学习传统的梯度下降法反向破译一个程序, 比如你写了一个python程序, 你用很多不同的输入得到很多对应的输出, 你可以把它给神经图灵机训练, 最终本来对程序丝毫无所知的神经图灵机居然可以如同学会了这个程序。
复杂网络基础2的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于复杂网络基础理论答案、复杂网络基础2的信息别忘了在本站进行查找喔。