基于忆阻突触器件的硬件神经网络是神经形态计算的重要发展方向,是后摩尔时代突破传统冯·诺依曼计算架构的有力技术候选。综述了国内外忆阻硬件神经网络的近期发展现状,从器件发展和神经网络两个方面,详细阐述了忆阻器这一新兴信息器件在神经形态计算中所发挥的角色作用,讨论了依然存在的关键问题和技术挑战。忆阻器为实现存算一体化架构和超越摩尔定律提供了技术障碍突破的可行方案。
引 言
在当今数据量爆炸式增长的背景下,传统计算架构遭遇冯·诺依曼瓶颈,晶体管微缩,摩尔定律已难以延续,这已成为继续提升计算系统性能过程中难以克服的技术障碍[1-4]。神经形态计算概念的提出无疑是可以实现技术突破的一大曙光,人脑信息处理系统的复杂程度是最先进的超级计算机也无法媲美的。在已报道的神经形态计算架构芯片中,其计算能力显著提高,并且体积和能耗远小得多。因此,神经形态计算架构的发展在软件和硬件领域都被极度重视,有望替换当前计算系统架构。
而在众多用于实现神经形态计算的硬件元件中,忆阻器以其高集成度、低功耗、可模拟突触可塑性等特点成为一大有力备选。忆阻器早在1971年就由蔡少棠教授[5]以第4种无源基本电路元件的概念提出,2008年由惠普实验室首次在 Pt/TiO2/Pt三明治叠层结构中通过实验验证[6]。忆阻器首先因其电阻转变效应而被提出用作阻变存储器并被广泛研究。2010年密歇根大学卢伟教授团队[7]提出可以通过操控忆阻器件中离子迁移过程而精细调控器件电导值,率先在Si:Ag忆阻器中实验模拟实现了突触权重调节行为和脉冲时序依赖突触可塑性,从而掀起了忆阻人工神经突触和神经网络的研究热潮。
1.神经形态计算与忆阻器件
自1965年由英特尔(Intel)创始人之一GordonMoore提出摩尔定律以来,半导体行业的技术发展已经遵循这一定律超过了半个世纪,晶体管技术节点已经微缩到5nm以下,如图1所示[2]。但近年来,由于硅技术的物理极限,摩尔定律的发展被预言面临终结,芯片上的电子元器件不可能无限制地缩小。因此以密度驱动发展的晶体管技术也逐渐达到物理极限,超越摩尔定律的多功能新兴信息器件可能成为后摩尔时代信息技术中不可或缺的基石。
图1.摩尔定律
在大数据时代背景下,传统数据处理方法中存储器与处理器相分离的架构带来了冯·诺依曼瓶颈问题,即存储器和处理器的运行速度均能达到相当水平,但连接这两部分的总线传输速度远远达不到要求,频繁的数据通信消耗了大部分信息处理的时间和功耗。这种处理方法已经无法满足物联网、边缘计算等新应用需求。相比之下,人脑神经系统的信息活动具有大规模并行、分布式存储与处理、自组织、自适应和自学习等特征,数据存储与处理没有明显的界限,在处理非结构化数据等情况下具有非凡的优势。人工智能就是研究、开发用于模拟、延伸和扩展人的智能的系统,对人的意识、思维的信息过程进行模拟,在当今时代背景下具有巨大潜力。所以,未来的计算机体系结构可能需要改变传统的把计算和存储分开的冯·诺依曼架构,利用非易失存储器件,打破“存储墙”,模拟人脑处理机制,构建存储与计算相融合的存算一体计算架构,如图2所示。
图2.传统冯·诺依曼计算架构与基于非易失存储器的存算一体化架构
神经形态计算的研究与发展是通向未来人工智能时代,构建新型存算一体架构的赛道之一。在神经形态计算的研究领域,类神经网络与新型神经形态硬件是两大基础研究,在此研究基础上,结合对生物大脑机制的愈加深入了解,最终实现人工智能。
在类神经网络方面,以深度学习为基础的神经网络研究已经普遍存在于人工智能领域。神经网络,即以数学模型来模拟人脑神经元及突触的结构,并结合多层次传导来模拟神经元的互联结构,现如今已大量应用于人工智能。神经网络的发展一方面是基于对生物大脑的理解更贴切地去模拟其工作机制,如第三代人工神经网络——脉冲神经网络的提出与发展;另一方面是以片上网络配合软硬件以数学建模的方式来模拟脑内神经传导系统,目标侧重于理解脑部信号传导的方式,以从计算仿真角度反向助于了解大脑的运作方式。
在新型神经形态硬件方面,器件、电路以及整体架构设计都是极其重要的研究方向。在器件方面,基于新兴非易失性存储器的神经形态计算近来引起人们极大的关注,其中包括忆阻器[8]、相变存储器[9]、铁电存储器[10]、自旋电子器件[11]等,它们可用于模拟生物神经元和突触的特性,更重要的是它们都可能成为模拟存算一体计算的基础技术。在电路设计方面,主要是实现仿生信号的产生与处理,以及模拟-数字混合信号的高效处理。在整体架构设计方面,实现存算一体化是核心目标,有助于大幅减少数据迁移开销,提高处理效率,克服冯·诺依曼瓶颈和存储墙问题。
1.2 忆阻器件
忆阻器是一个简单的金属-绝缘体-金属(MIM)三明治结构,在电压操作下能实现阻态翻转,如图3(a)、(b)所示。对于双极性忆阻器来说,施加正电压能将器件从高阻态转变为低阻态,称为SET过程,反之施加负电压能将器件从低阻态重新转变为高阻态,称为RESET过程。因此,忆阻器在初期被广泛作为阻变存储器开展研究,在器件结构、材料等方面得到广泛研究并不断提出其优化设计方案。2011年,美国密歇根大学卢伟教授团队以忆阻器的导电丝生长与断裂的阻变机制为出发点,验证了器件的电导可以在电压脉冲激励下逐渐变化,即导电丝可以在外部激励下逐渐生长和断裂,从而贴切地模拟了生物突触权重在外界刺激下的逐渐增强或减弱,如图3(c)、(d),并通过实验验证了器件对生物突触可塑性—脉冲时序依赖可塑性(STDP)的可模拟性。自此,忆阻突触器件成为神经形态计算中新型电子突触器件的有力候选者之一。
忆阻器作为电子突触器件主要包括以下几个特点:
(1)具有良好的生物突触特性模拟性。作为突触器件必须具备基本的生物突触特性,如长时程增强(long-term potentiation,LTP)和长时程抑制(longterm depression,LTD),脉冲时序依赖可塑性(spiketiming dependent plasticity,STDP),脉冲频率依赖可塑性(spike-rate dependent plasticity,SRDP)等[12];
(2)突触单元在特征尺寸、功耗、速度等方面具有优于传统晶体管突触电路的明显优势;
(3)忆阻突触器件具备可扩展性,包括在材料方面能被广泛应用,同时在集成度上也能大规模扩展。单个突触器件的功能是基本需求,而大规模扩展和应用是必要考虑的路线,忆阻器与晶体管进行集成的1T1R阵列就是一个研究瞩目的规模扩展应用方向。
图3.忆阻器件基本特性及其生物突触可拟性
近年来,基于忆阻器的神经网络存算一体加速器倍受学术界和工业界的关注。研究表明,数据在CPU和片外存储之间的传输消耗的能量比一个浮点运算所消耗的能量高2个数量级。一方面,基于忆阻器的内存加速器将计算与存储紧密结合,从而省去传统的冯·诺依曼体系结构的中心处理器和内存之间的数据传输,进而提升整体系统的性能并节省大部分的系统能耗。另一方面,通过在忆阻器阵列外部加入一些功能单元,阵列能在几乎一个读操作的延迟内完成一次矩阵乘加计算(multiplication andaccumulation,MAC),如图4所示,且不随着输入维度的增加而增加,而MAC运算在神经网络计算中被非常频繁地使用,是其主要耗能来源之一。
道翰天琼CiGril认知智能机器人API用户需要按步骤获取基本信息:
请求地址:http://www.weilaitec.com/cigirlrobot.cgr
请求方式:post
请求参数:
参数 |
类型 |
默认值 |
描述 |
userid |
String |
无 |
平台注册账号 |
appid |
String |
无 |
平台创建的应用id |
key |
String |
无 |
平台应用生成的秘钥 |
msg |
String |
"" |
用户端消息内容 |
ip |
String |
"" |
客户端ip要求唯一性,无ip等可以用QQ账号,微信账号,手机MAC地址等代替。 |
接口连接示例:http://www.weilaitec.com/cigirlrobot.cgr?key=UTNJK34THXK010T566ZI39VES50BLRBE8R66H5R3FOAO84J3BV&msg=你好&ip=119.25.36.48&userid=jackli&appid=52454214552
注意事项:参数名称都要小写,五个参数不能遗漏,参数名称都要写对,且各个参数的值不能为空字符串。否则无法请求成功。userid,appid,key三个参数要到平台注册登录创建应用之后,然后查看应用详情就可以看到。userid就是平台注册账号。
示例代码JAVA:
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
public class apitest {
/**
* Get请求,获得返回数据
* @param urlStr
* @return
*/
private static String opUrl(String urlStr)
{
URL url = null;
HttpURLConnection conn = null;
InputStream is = null;
ByteArrayOutputStream baos = null;
try
{
url = new URL(urlStr);
conn = (HttpURLConnection) url.openConnection();
conn.setReadTimeout(5 * 10000);
conn.setConnectTimeout(5 * 10000);
conn.setRequestMethod("POST");
if (conn.getResponseCode() == 200)
{
is = conn.getInputStream();
baos = new ByteArrayOutputStream();
int len = -1;
byte[] buf = new byte[128];
while ((len = is.read(buf)) != -1)
{
baos.write(buf, 0, len);
}
baos.flush();
String result = baos.toString();
return result;
} else
{
throw new Exception("服务器连接错误!");
}
} catch (Exception e)
{
e.printStackTrace();
} finally
{
try
{
if (is != null)
is.close();
} catch (IOException e)
{
e.printStackTrace();
}
try
{
if (baos != null)
baos.close();
} catch (IOException e)
{
e.printStackTrace();
}
conn.disconnect();
}
return "";
}
public static void main(String args []){
//msg参数就是传输过去的对话内容。
System.out.println(opUrl("http://www.weilaitec.com/cigirlrobot.cgr?key=UTNJK34THXK010T566ZI39VES50BLRBE8R66H5R3FOAO84J3BV&msg=你好&ip=119.25.36.48&userid=jackli&appid=52454214552"));
}
}