构建网络攻击矩阵模型的目的_构建网络攻击矩阵模型

hacker|
176

如何用matlab模拟无尺度网络收到随机攻击

tic;

%%%%%% 四个输入变量

I=10; %% 表示现实的次数,I要大于或者等于3,才能对节点的度数用邻接矩阵进行统计

N=1000; %% 表示网络的节点的个数

m0=3; %% 表示网络的初始节点个数

m=1; %% 表示新点与旧网络连边的数目

realization_of_distribution=sparse(I,N);

for J=1:I % 对I次现实做平均,然后用这个平均值近似网络的度分布

format long;

adjacent_matrix=sparse(m0,m0);

for i=1:m0

for j=1:3

if j~=i

adjacent_matrix(i,j)=1;

end

end

end

adjacent_matrix=sparse(adjacent_matrix);

node_degree=sparse(1,m0); % node_degree表示各个节点的度数

for p=1:m0

%last_element=sparse(m0,1);

%last_element=cumsum(adjacent_matrix(1:m0,p));

%node_degree(p)=last_element(m0);

node_degree(p)=sum(adjacent_matrix(1:m0,p));

end

%%%%%%%%%%%%%%%%%%%%%%%%%

% 每次加入一个新点,新点和老点之间按照择优概率进行连接,

% 值得注意的是,每次新点加入之后,网络的择优概率都发生变化,

% 每一次循环都是一个相对独立的整体,要把流程进行分割处理

for iteration=4:N

[J,iteration]; % 控制现实和迭代的次数

total_degree=2*m*(iteration-4)+6; %%% 迭代之前的网络各个节点的度数之和

degree_frequency=node_degree/total_degree; %%% 每个节点的度数的频数,这是新点连边的择优概率

cum_distribution=cumsum(degree_frequency); %%% cum_distribution把区间 [0,1] 分成若干个小区间,从而对这些个小区间进行投点实验

interval=cum_distribution(1:(iteration-1)); %%% 这是小区间的端点,是cum_distribution的前 iteration-1 个元素

%**************************************************************************

%%% 下面把 r1 和 [0,1] 内的各个小区间的端点进行比较,落在第 i 小区间,就意味着和第 i 个节点相连边 %%%

choose=zeros(1,m); %%% choose存放的是和新点相连接的一个老点

%%% 选出第一个和新点相连接的顶点

r1=rand(1);

if r1

choose(1)=1;

elseif r1=interval(iteration-2)

choose(1)=iteration-1;

elseif (r1=interval(1))r1

for j=2:iteration-2

if (r1=interval(j-1))r1

choose(1)=j;

break;

end

end

end

基于随机博弈与改进WolF-PHC的网络防御决策方法

基于随机博弈与改进WolF-PHC的网络防御决策方法      杨俊楠

问题:实际网络攻防中很难达到完全理性的要求,使得现有方法的准确性和指导价值有所降低。状态爆炸。

思路:从网络攻防对抗实际出发,分析有限理性对攻防随机博弈的影响,在有限理性约束下构建攻防随机博弈模型。针对网络状态爆炸的问题,提出一种基于攻防图的网络状态与攻防动作提取方法,有效压缩了博弈状态空间。在此基础上引入了强化学习中的WoLF-PHC算法进行分析,并设计了具有在线学习能力的防御决策算法,通过引入资格迹改进WoLF-PHC算法,进一步提高了防御者的学习速度。

所得策略在有限理性下优于现有攻防随机博弈模型的纳什均衡策略。

本文贡献:

(1)提出一种以主机为中心的攻防图模型并设计了攻防图生成算法,有效压缩了博弈状态空间。

(2)本文将强化学习引入到随机博弈中,使随机博弈由完全理性拓展到有限理性领域。现有有限博弈大多采用生物进化机制进行学习,以群体为研究对象,与其相比,本文所提方法降低了博弈参与人之间的信息交换,更适用于指导个体防御决策。

(3)基于资格迹对WoLF-PHC算法进行了改进,加快了防御者的学习速度,减少了算法对数据的依赖并通过实验证明了方法的有效性。

强化学习:一种经典的在线学习方法,其参与人通过环境的反馈进行独立学习,相比生物进化方法,强化学习更适于指导个体的决策。

基于随机博弈的攻防对抗建模

问题描述与分析

有限理性下的攻防随机博弈学习机制需满足2点需求:

1)学习算法的收敛性。

2)学习过程不需要过多攻击者信息。

WoLF-PHC算法是一种典型的策略梯度强化学习方法,使防御者通过网络反馈进行学习,不需要与攻击者之间过多的信息交换。

WoLF机制的引入保证了WoLF-PHC算法的收敛性:在攻击者通过学习采用纳什均衡策略后,WoLF机制使得防御者能够收敛到对应的纳什均衡策略;在攻击者尚未学习到纳什均衡策略时,WoLF机制使得防御者能够收敛到对应的最优防御策略。

攻防随机博弈模型

对每个状态下博弈所需的“信息”和“行动顺序”2个关键要素进行假定。

(1)“信息”。受有限理性的约束,将攻击者历史动作和攻击者的收益函数设定为攻击者的私有信息。网络状态为双方的共同知识。

(2)“行动顺序”。由于攻防双方的非合作行,双方只能通过检测网络来观察对方的行动,这会比动作的执行时间至少延迟一个时间片,所以在每个时间片攻防双方是同时行动的,这里的“同时”是一个信息概念而非时间概念,即尽管从时间概念上攻防双方的选择可能不在同一时刻,但由于攻防双方在选择行动时不知道对方的选择则认为是同时行动。

为了增强模型的通用性将转移概率设定为攻防双方的未知信息。

定义1.攻防随机博弈模型(attack defense stochastic game model,AD-SGM)是一个六元组AD-SGM=(N,S,DR,Q, ),其中:

①N=(attacker,defender)为参与博弈的2个剧中人,分别代表网络攻击者和防御者;

②S=( , ,···, )为随机博弈状态集合,由网络状态组成;

③D=( , ,···, )为防御者动作集合,其中 ={ , ,···, }为防御者在博弈状态 的动作集合;

④ ( ,d, )为防御者状态转移后的立即回报

⑤ ( ,d)为防御者的状态-动作收益函数,指期望收益

⑥ 为防御者在状态 的防御策略

基于攻防图的网络状态与攻防动作提取方法

随即博弈模型重要组成部分——网络状态与攻防动作

关键点是对两者的提取

每个网络状态包含当前网络所有节点的安全要素,网络状态的数量是安全要素的幂集,会产生“状态爆炸”。为此提出了以主机为中心的攻防图模型,每个状态节点仅描述主机状态,可以有效压缩状态节点规模。利用此攻防图提取的网络状态及攻防动作更有利于进行网络攻防对抗分析。

定义2.攻防图是一个二元组G=(S,E)。其中S={ , ,····, }是节点安全状态集合, =host,privilege,其中host是节点的唯一标识,privilege={none,user,root}分别标识不具有任何权限、具有普通用户权限、具有管理员权限。E=( , )为有向边,标识攻击动作或防御动作的发生引起节点状态的转移, =( ,v/d, ),k=a,d,其中 为源结点, 为目标结点。

攻防随机博弈模型的状态集合由攻防图节点提取,防御动作集合由攻防图的边提取。

1)网络安全要素

网络安全要素NSE由 网络连接关系矩阵C 、 节点脆弱性信息V 、 节点服务信息F 、 节点访问权限P 组成。其中C=host host port描述节点之间的连接关系,矩阵的行表示源节点shost,矩阵的列表示dhost,矩阵元素表示shost到dhost的端口port访问关系,当port= 时表示shost与dhost之间不存在连接关系;V=host,service,cveid表示节点host上的服务service存在脆弱性cveid,包括系统软件、应用软件存在的安全漏洞和配置不当或配置错误引起的安全漏洞;F=host,service表示节点host上开启服务service;P=host,privilege表示攻击者在节点host上拥有privilege访问权限。

2)攻击模板

攻击模板AM时对脆弱性利用的描述:AM=tid,prec,postc。其中tid是攻击模式标识;prec=P,V,C,F描述攻击者利用一个脆弱性所需具备的前提条件集合,包括攻击者在源节点shost上具有的初始访问权限privilege、目标节点的脆弱性信息cveid、网络节点关系C、节点运行服务F,只有满足该条件集合,攻击者才能成功利用该脆弱性;postc=P,C,sd描述攻击者成功利用一个脆弱性而产生的后果,包括攻击者在目标节点上获得权限的提升、网络连接关系的变化以及服务破坏等。

3)防御模块

防御模板DM是防御者在预测或者识别攻击后采取的相应措施:DM=tid,dset,tid是攻击标识,dset={ ,post , ,post ,····, ,post }是应对特定攻击的防御策略集。其中, 是防御策略标识;post =F,V,P,C描述防御策略对网络安全要素的影响,包括对节点服务信息、节点漏洞信息、攻击者权限信息、节点连接关系等的影响。

攻防图生成算法

基于WoLF-PHC的博弈分析与策略选取

将强化学习机制引入到有限理性随机博弈中,采用WoLF-PHC算法在AD-SGM基础上进行防御策略选取。

WoLF-PHC算法原理

Q-learning算法

Q-learining是WoLF-PHC算法的基础,是一种典型的免模型强化学习算法,

Q-learning中Agent通过与环境的交互获得回报和环境状态转移的只是,知识用收益 来表示,通过更新 来进行学习。其收益函数 为

Q-learning的策略为

PHC算法

爬山策略算法是一种适用于混合策略的简单实用的梯度下降学习算法,是对Q-learning的改进。PHC的状态-动作收益函数 与Q-learning相同,但不再沿用Q-learning的策略更新方式,而是通过执行爬山算法对混合策略 进行更新, 为策略学习率。

WoLF-PHC算法

狼爬山策略算法是对PHC算法的改进。通过引入WoLF机制,使防御者具有2种不同的策略学习率,当获胜时采用低策略学习率 ,当失败时采用高策略学习率 .

2个学习率使得防御者在比与其表现差时能快速适应攻击者的策略,比预期表现差时能快速适应攻击者的策略,比与其表现好时能谨慎学习。最重要的时WoLF机制的引入,保证了算法的收敛性。WoLF-PHC算法采用平均策略作为胜利和失败的判断标准

基于资格迹的改进WoLF-PHC及防御策略算法

为提高WoLF-PHC算法的学习速度,减少算法对数据量的依赖程度,引入资格迹对WoLF-PHC进行改进。资格迹能跟踪最近访问的特定状态-动作轨迹,然后将当前回报分配给最近访问的状态-动作。

对WoLF-PHC进行改进。定义,每个状态-动作的资格迹为e(s,a)设定当前网络状态为 ,资格迹更新:

算法2 防御决策算法

实验分析

利用工具对实验网络进行扫描

构建实验场景的AD-SGM

①N=(attacker,defender)为参与博弈的局中人,分别代表网络攻击者和防御者。

②随机博弈状态集合S=(s0,s1,s2,s3,s4,s5,s6),随机博弈状态由网络状态组成,从攻击图与防御图种的节点提取。

测试与分析

实验的目的:1)测试不同参数设置对算法的影响,从而找出适用于本场景的实验参数

                      2)将本文的方法与现有典型方法进行比较,验证本文方法的先进性;

                      3)测试基于资格迹对WoLF-PHC算法改进的有效性。

1)

2)

第一组实验:

[12]随即博弈 [16]演化博弈

[12]防御策略为 =0.7, =0.3

[16]演化稳定均衡的防御策略为 =0.8, =0.2

第二组实验:

可知,当面对学习能力较弱的攻击者时,本文方法由于文献[12]和文献[16]的方法。当面对学习能力较强的攻击者时,如果攻击者尚未通过学习得到纳什均衡,此时本文的方法仍然优秀;如果攻击者通过学习得到了纳什均衡策略,取得与文献[12]相同的效果,并优于文献[16]。

有无资格迹的对比测试

每1000次的平均收益变化对比

统计有、无资格迹下前3000次防御收益的平均值,各统计10次。

网络攻击类型

1、服务拒绝攻击

服务拒绝攻击企图通过使你的服务计算机崩溃或把它压跨来阻止你提供服务,服务拒绝攻击是最容易实施的攻击行为,主要包括:

死亡之ping (ping of death)

概览:由于在早期的阶段,路由器对包的最大尺寸都有限制,许多操作系统对TCP/IP栈的实现在ICMP包上都是规定64KB,并且在对包的标题头进行读取之后,要根据该标题头里包含的信息来为有效载荷生成缓冲区,当产生畸形的,声称自己的尺寸超过ICMP上限的包也就是加载的尺寸超过64K上限时,就会出现内存分配错误,导致TCP/IP堆栈崩溃,致使接受方当机。

防御:现在所有的标准TCP/IP实现都已实现对付超大尺寸的包,并且大多数防火墙能够自动过滤这些攻击,包括:从windows98之后的windows,NT(service pack 3之后),linux、Solaris、和Mac OS都具有抵抗一般ping of death攻击的能力。此外,对防火墙进行配置,阻断ICMP以及任何未知协议,都讲防止此类攻击。

泪滴(teardrop)

概览:泪滴攻击利用那些在TCP/IP堆栈实现中信任IP碎片中的包的标题头所包含的信息来实现自己的攻击。IP分段含有指示该分段所包含的是原包的哪一段的信息,某些TCP/IP(包括service pack 4以前的NT)在收到含有重叠偏移的伪造分段时将崩溃。

防御:服务器应用最新的服务包,或者在设置防火墙时对分段进行重组,而不是转发它们。

UDP洪水(UDP flood)

概览:各种各样的假冒攻击利用简单的TCP/IP服务,如Chargen和Echo来传送毫无用处的占满带宽的数据。通过伪造与某一主机的Chargen服务之间的一次的UDP连接,回复地址指向开着Echo服务的一台主机,这样就生成在两台主机之间的足够多的无用数据流,如果足够多的数据流就会导致带宽的服务攻击。

防御:关掉不必要的TCP/IP服务,或者对防火墙进行配置阻断来自Internet的请求这些服务的UDP请求。

SYN洪水(SYN flood)

概览:一些TCP/IP栈的实现只能等待从有限数量的计算机发来的ACK消息,因为他们只有有限的内存缓冲区用于创建连接,如果这一缓冲区充满了虚假连接的初始信息,该服务器就会对接下来的连接停止响应,直到缓冲区里的连接企图超时。在一些创建连接不受限制的实现里,SYN洪水具有类似的影响。

防御:在防火墙上过滤来自同一主机的后续连接。

未来的SYN洪水令人担忧,由于释放洪水的并不寻求响应,所以无法从一个简单高容量的传输中鉴别出来。

Land攻击

概览:在Land攻击中,一个特别打造的SYN包它的原地址和目标地址都被设置成某一个服务器地址,此举将导致接受服务器向它自己的地址发送SYN-ACK消息,结果这个地址又发回ACK消息并创建一个空连接,每一个这样的连接都将保留直到超时掉,对Land攻击反应不同,许多UNIX实现将崩溃,NT变的极其缓慢(大约持续五分钟)。

防御:打最新的补丁,或者在防火墙进行配置,将那些在外部接口上入站的含有内部源地址滤掉。(包括 10域、127域、192.168域、172.16到172.31域)

Smurf攻击

概览:一个简单的smurf攻击通过使用将回复地址设置成受害网络的广播地址的ICMP应答请求(ping)数据包来淹没受害主机的方式进行,最终导致该网络的所有主机都对此ICMP应答请求作出答复,导致网络阻塞,比ping of death洪水的流量高出一或两个数量级。更加复杂的Smurf将源地址改为第三方的受害者,最终导致第三方雪崩。

防御:为了防止黑客利用你的网络攻击他人,关闭外部路由器或防火墙的广播地址特性。为防止被攻击,在防火墙上设置规则,丢弃掉ICMP包。

Fraggle攻击

概览:Fraggle攻击对Smurf攻击作了简单的修改,使用的是UDP应答消息而非ICMP

防御:在防火墙上过滤掉UDP应答消息

电子邮件炸弹

概览:电子邮件炸弹是最古老的匿名攻击之一,通过设置一台机器不断的大量的向同一地址发送电子邮件,攻击者能够耗尽接受者网络的带宽。

防御:对邮件地址进行配置,自动删除来自同一主机的过量或重复的消息。

畸形消息攻击

概览:各类操作系统上的许多服务都存在此类问题,由于这些服务在处理信息之前没有进行适当正确的错误校验,在收到畸形的信息可能会崩溃。

防御:打最新的服务补丁。

2、利用型攻击

利用型攻击是一类试图直接对你的机器进行控制的攻击,最常见的有三种:

口令猜测

概览:一旦黑客识别了一台主机而且发现了基于NetBIOS、Telnet或NFS这样的服务的可利用的用户帐号,成功的口令猜测能提供对机器的控制。

防御:要选用难以猜测的口令,比如词和标点符号的组合。确保像NFS、NetBIOS和Telnet这样可利用的服务不暴露在公共范围。如果该服务支持锁定策略,就进行锁定。

特洛伊木马

概览:特洛伊木马是一种或是直接由一个黑客,或是通过一个不令人起疑的用户秘密安装到目标系统的程序。一旦安装成功并取得管理员权限,安装此程序的人就可以直接远程控制目标系统。最有效的一种叫做后门程序,恶意程序包括:NetBus、BackOrifice和BO2k,用于控制系统的良性程序如:netcat、VNC、pcAnywhere。理想的后门程序透明运行。

防御:避免下载可疑程序并拒绝执行,运用网络扫描软件定期监视内部主机上的监听TCP服务。

缓冲区溢出

概览:由于在很多的服务程序中大意的程序员使用象strcpy(),strcat()类似的不进行有效位检查的函数,最终可能导致恶意用户编写一小段利用程序来进一步打开安全豁口然后将该代码缀在缓冲区有效载荷末尾,这样当发生缓冲区溢出时,返回指针指向恶意代码,这样系统的控制权就会被夺取。

防御:利用SafeLib、tripwire这样的程序保护系统,或者浏览最新的安全公告不断更新操作系统。

3、信息收集型攻击

信息收集型攻击并不对目标本身造成危害,如名所示这类攻击被用来为进一步入侵提供有用的信息。主要包括:扫描技术、体系结构刺探、利用信息服务

扫描技术

地址扫描

概览:运用ping这样的程序探测目标地址,对此作出响应的表示其存在。

防御:在防火墙上过滤掉ICMP应答消息。

端口扫描

概览:通常使用一些软件,向大范围的主机连接一系列的TCP端口,扫描软件报告它成功的建立了连接的主机所开的端口。

防御:许多防火墙能检测到是否被扫描,并自动阻断扫描企图。

反响映射

概览:黑客向主机发送虚假消息,然后根据返回“host unreachable”这一消息特征判断出哪些主机是存在的。目前由于正常的扫描活动容易被防火墙侦测到,黑客转而使用不会触发防火墙规则的常见消息类型,这些类型包括:RESET消息、SYN-ACK消息、DNS响应包。

防御:NAT和非路由代理服务器能够自动抵御此类攻击,也可以在防火墙上过滤“host unreachable”ICMP应答。

慢速扫描

概览:由于一般扫描侦测器的实现是通过监视某个时间桢里一台特定主机发起的连接的数目(例如每秒10次)来决定是否在被扫描,这样黑客可以通过使用扫描速度慢一些的扫描软件进行扫描。

防御:通过引诱服务来对慢速扫描进行侦测。

体系结构探测

概览:黑客使用具有已知响应类型的数据库的自动工具,对来自目标主机的、对坏数据包传送所作出的响应进行检查。由于每种操作系统都有其独特的响应方法(例NT和Solaris的TCP/IP堆栈具体实现有所不同),通过将此独特的响应与数据库中的已知响应进行对比,黑客经常能够确定出目标主机所运行的操作系统。

防御:去掉或修改各种Banner,包括操作系统和各种应用服务的,阻断用于识别的端口扰乱对方的攻击计划。

利用信息服务

DNS域转换

概览:DNS协议不对转换或信息性的更新进行身份认证,这使得该协议被人以一些不同的方式加以利用。如果你维护着一台公共的DNS服务器,黑客只需实施一次域转换操作就能得到你所有主机的名称以及内部IP地址。

防御:在防火墙处过滤掉域转换请求。

Finger服务

概览:黑客使用finger命令来刺探一台finger服务器以获取关于该系统的用户的信息。

防御:关闭finger服务并记录尝试连接该服务的对方IP地址,或者在防火墙上进行过滤。

LDAP服务

概览:黑客使用LDAP协议窥探网络内部的系统和它们的用户的信息。

防御:对于刺探内部网络的LDAP进行阻断并记录,如果在公共机器上提供LDAP服务,那么应把LDAP服务器放入DMZ。

4、假消息攻击

用于攻击目标配置不正确的消息,主要包括:DNS高速缓存污染、伪造电子邮件。

DNS高速缓存污染

概览:由于DNS服务器与其他名称服务器交换信息的时候并不进行身份验证,这就使得黑客可以将不正确的信息掺进来并把用户引向黑客自己的主机。

防御:在防火墙上过滤入站的DNS更新,外部DNS服务器不应能更改你的内部服务器对内部机器的认识。

伪造电子邮件

概览:由于SMTP并不对邮件的发送者的身份进行鉴定,因此黑客可以对你的内部客户伪造电子邮件,声称是来自某个客户认识并相信的人,并附带上可安装的特洛伊木马程序,或者是一个引向恶意网站的连接。

防御:使用PGP等安全工具并安装电子邮件证书。

Keras快速构建神经网络模型

用Keras搭建神经网络的步骤:

深度学习框架Keras——像搭积木般构建神经网络,主要分为7个部分,每个部分只需要几个keras API函数就能实现,用户即可像搭积木般一层层构建神经网络模型。

1. 创建模型 Create model

2. 添加层级 Add Layer

3. 模型编译 Compile

4. 数据填充 Fit

5. 模型评估 Evaluate

6. 模型预测 Predict

7. 模型保存 Save model

下面章节会对每一部分具体来介绍。。。

Keras 中主要有三类模型:Sequential model, Functional model, Subclass model

在开始创建模型之前,首先需要引入tensorflow和keras模块,然后再创建一个Sequential model

Sequential API定义如下:

layers参数可以为空, 然后通过add method向模型中添加layer,相对应的通过pop method移除模型中layer。

创建Function API模型,可以调用Keras.Model来指定多输入多数出。

Keras.Model定义:

Layers是神经网络基本构建块。一个Layer包含了tensor-in/tensor-out的计算方法和一些状态,并保存在TensorFlow变量中(即layers的权重weights)。

Layers主要分为6个类别,基础层,核心层,卷基层,池化层,循环层,融合层。

对派生类的实现可以用以下方法:

** init (): 定义layer的属性,创建layer的静态变量。

** build(self, input_shape): 创建依赖于输入的变量,可以调用add_weight()。

** call(self, *args, **kwargs): 在确保已调用build()之后,在 call 中调用。

** get_config(self): 返回包含用于初始化此层的配置的字典类型。

创建SimpleDense派生类,在build()函数里添加trainable weights。实现y=input*w +b

结果输出:

创建ComputeSum派生类,在 init 函数里添加 non-trainable weights。实现输入矩阵沿轴0元素相加后,x=x+self.total

结果输出:

核心层是最常用的层,涉及到数据的转换和处理的时候都会用到这些层。

Dense层就是所谓的全连接神经网络层,简称全连接层。全连接层中的每个神经元与其前一层的所有神经元进行全连接。

Dense 实现以下操作: output = activation(dot(input, kernel) + bias) 其中 activation 是按逐个元素计算的激活函数,kernel 是由网络层创建的权值矩阵,以及 bias 是其创建的偏置向量 (只在 use_bias 为 True 时才有用)。

将激活函数应用于输出。输入信号进入神经元后进行的运算处理。

sigmoid、tanh、ReLU、softplus的对比曲线如下图所示:

激活函数可以通过设置单独的激活层Activation实现,也可以在构造层对象时通过传递 activation 参数实现:

Dropout在训练中每次更新时,将输入单元的按比率随机设置为0,这有助于防止过拟合。未设置为0的输入将按1 /(1-rate)放大,以使所有输入的总和不变。

请注意,仅当训练设置为True时才应用Dropout层,以便在推理过程中不会丢弃任何值。 使用model.fit时,训练将自动适当地设置为True。

将输入展平。不影响批量大小。注意:如果输入的形状是(batch,)没有特征轴,则展平会增加通道尺寸,而输出的形状是(batch, 1)。

将输入重新调整为特定的尺寸

将任意表达式封装为Layer对象。在Lambda层,以便在构造模型时可以使用任意TensorFlow函数。 Lambda层最适合简单操作或快速实验。 Lambda层是通过序列化Python字节码来保存的。

使用覆盖值覆盖序列,以跳过时间步。

对于输入张量的每一个时间步(张量的第一个维度),如果所有时间步中输入张量的值与mask_value相等,则将在所有下游层中屏蔽(跳过)该时间步。如果任何下游层不支持覆盖但仍然收到此类输入覆盖信息,会引发异常。

举例说明:

Embedding 是一个将离散变量转为连续向量表示的一个方式。该层只能用作模型中的第一层。

Embedding 有以下3个主要目的: 在 embedding 空间中查找最近邻,这可以很好的用于根据用户的兴趣来进行推荐。 作为监督性学习任务的输入。 用于可视化不同离散变量之间的关系.

举例说明:

输出结果:

由维基百科的介绍我们可以得知,卷积是一种定义在两个函数(𝑓跟𝑔)上的数学操作,旨在产生一个新的函数。那么𝑓和𝑔的卷积就可以写成𝑓∗𝑔,数学定义如下:

对应到不同方面,卷积可以有不同的解释:𝑔 既可以看作我们在深度学习里常说的核(Kernel),也可以对应到信号处理中的滤波器(Filter)。而 𝑓 可以是我们所说的机器学习中的特征(Feature),也可以是信号处理中的信号(Signal)。f和g的卷积 (𝑓∗𝑔)就可以看作是对𝑓的加权求和。

一维时域卷积操作:

二维图像卷积操作:

卷积运算的目的是提取输入的不同特征,第一层卷积层可能只能提取一些低级的特征如边缘、线条和角等层级,更多层的网路能从低级特征中迭代提取更复杂的特征。

一维卷积层(即时域卷积),用以在一维输入信号上进行邻域滤波。

举例说明:

结果输出:

2D 卷积层 (例如对图像的空间卷积)。

举例说明:

结果输出:

3D卷积层(例如体积上的空间卷积)

举例说明:

结果输出:

深度可分离1D卷积。该层执行分别作用在通道上的深度卷积,然后是混合通道的逐点卷积。 如果use_bias为True并提供了一个偏差初始值设定项,则它将偏差向量添加到输出中。 然后,它可选地应用激活函数以产生最终输出。

深度可分离的2D卷积。可分离的卷积包括首先执行深度空间卷积(它分别作用于每个输入通道),然后是点向卷积,它将混合所得的输出通道。 depth_multiplier参数控制在深度步骤中每个输入通道生成多少个输出通道。

直观上,可分离的卷积可以理解为将卷积内核分解为两个较小内核的一种方式,或者是Inception块的一种极端版本。

转置卷积层 (有时被成为反卷积)。对转置卷积的需求一般来自希望使用 与正常卷积相反方向的变换,将具有卷积输出尺寸的东西 转换为具有卷积输入尺寸的东西, 同时保持与所述卷积相容的连通性模式。

池化层是模仿人的视觉系统对数据进行降维,用更高层次的特征表示图像。实施池化的目的:降低信息冗余;提升模型的尺度不变性、旋转不变性。 防止过拟合。

通常有最大池化层,平均池化层。

池化层有三种形态:1D 用于一维数据,2D 一般用于二维图像数据,3D 带时间序列数据的图像数据

循环神经网络(Recurrent Neural Network, 简称 RNN),循环神经网络的提出便是基于记忆模型的想法,期望网络能够记住前面出现的特征,并依据特征推断后面的结果,而且整体的网络结构不断循环,因此得名为循环神经网络。

长短期记忆网络(Long-Short Term Memory, LSTM )论文首次发表于1997年。由于独特的设计结构,LSTM适合于处理和预测时间序列中间隔和延迟非常长的重要事件。

举例说明:

结果输出:

GRU 门控循环单元- Cho et al. 2014.

在LSTM中引入了三个门函数:输入门、遗忘门和输出门来控制输入值、记忆值和输出值。而在GRU模型中只有两个门:分别是更新门和重置门。与LSTM相比,GRU内部少了一个”门控“,参数比LSTM少,但是却也能够达到与LSTM相当的功能。考虑到硬件的计算能力和时间成本,因而很多时候我们也就会选择更加”实用“的GRU。

举例说明:

结果输出:

循环神经网络层基类。

关于指定 RNN 初始状态的说明

您可以通过使用关键字参数 initial_state 调用它们来符号化地指定 RNN 层的初始状态。 initial_state 的值应该是表示 RNN 层初始状态的张量或张量列表。

可以通过调用带有关键字参数 states 的 reset_states 方法来数字化地指定 RNN 层的初始状态。 states 的值应该是一个代表 RNN 层初始状态的 Numpy 数组或者 Numpy 数组列表。

关于给 RNN 传递外部常量的说明

可以使用 RNN. call (以及 RNN.call)的 constants 关键字参数将「外部」常量传递给单元。 这要求 cell.call 方法接受相同的关键字参数 constants。 这些常数可用于调节附加静态输入(不随时间变化)上的单元转换,也可用于注意力机制。

举例说明:

在训练模型之前,我们需要配置学习过程,这是通过compile方法完成的。

他接收三个参数:优化器 opt

0条大神的评论

发表评论