关于神经网络:强化学习从基础到进阶常见问题和面试必知必答7深度确定性策略梯度DDPG算法TD3算法详解

强化学习从根底到进阶-常见问题和面试必知必答[7]:深度确定性策略梯度DDPG算法、双提早深度确定性策略梯度TD3算法详解1.外围词汇深度确定性策略梯度(deep deterministic policy gradient,DDPG):在间断管制畛域经典的强化学习算法,是深度Q网络在处定性”示意其输入的是一个确定的动作,能够用于间断动作环境;“策略梯度”代表的是它用到的是策略网络,并且每步都会更新一次,其是一个单步更新的策略网络。其与深度Q网络都有指标网络和教训回放的技巧,在教训回放局部是统一的,在指标网络的更新上有些许不同。 2.常见问题汇总2.1 请解释随机性策略和确定性策略,两者有什么区别?(1)对于随机性策略 $\pi_\theta(a_t|s_t)$ ,咱们输出某一个状态 $s$,采取某一个动作 $a$ 的可能性并不是百分之百的,而是有一个概率的,就如同抽奖一样,依据概率随机抽取一个动作。 (2)对于确定性策略 $\mu_{\theta}(s_t)$ ,其没有概率的影响。当神经网络的参数固定之后,输出同样的状态,必然输入同样的动作,这就是确定性策略。 2.2 对于间断动作的管制空间和离散动作的管制空间,如果咱们都采取策略网络,应该别离如何操作?首先须要阐明的是,对于间断动作的管制空间,Q学习、深度Q网络等算法是没有方法解决的,所以咱们须要应用神经网络进行解决,因为其能够既输入概率值,也能够输入确定的策略 $\mu_{\theta}(s_t)$ 。 (1)要输入离散动作,最初输入的激活函数应用 Softmax 即可。其能够保障输入的是动作概率,而且所有的动作概率加和为1。 (2)要输入间断的动作,能够在输入层中加一层tanh激活函数,其能够把输入限度到 $[-1,1]$ 。咱们失去这个输入后,就能够依据理论动作的一个范畴再做缩放,而后将其输入给环境。比方神经网络输入一个浮点数2.8,通过tanh激活函数之后,它就能够被限度在 $[-1,1]$ ,输入0.99。假如小车的速度的动作范畴是 $[-2,2]$ ,那咱们就按比例将之从 $[-1,1]$ 扩充到 $[-2,2]$ ,0.99乘2,最终输入的就是1.98,将其作为小车的速度或者推小车的力输入给环境。 3.面试必知必答3.1 友善的面试官:请简述一下深度确定性策略梯度算法。深度确定性策略梯度算法应用演员-评论员构造,然而输入的不是动作的概率,而是具体动作,其能够用于间断动作的预测。优化的目标是将深度Q网络扩大到间断的动作空间。另外,其含意如其名: (1)深度是因为用了深度神经网络; (2)确定性示意其输入的是一个确定的动作,能够用于间断动作的环境; (3)策略梯度代表的是它用到的是策略网络。强化算法每个回合就会更新一次网络,然而深度确定性策略梯度算法每个步骤都会更新一次策略网络,它是一个单步更新的策略网络。 3.2 友善的面试官:请问深度确定性策略梯度算法是同策略算法还是异策略算法?请阐明具体起因并剖析。异策略算法。(1)深度确定性策略梯度算法是优化的深度Q网络,其应用了教训回放,所以为异策略算法。(2)因为深度确定性策略梯度算法为了保障肯定的摸索,对输入动作加了肯定的噪声,行为策略不再是优化的策略。 3.3友善的面试官:你是否理解过散布的分布式深度确定性策略梯度算法(distributed distributional deep deterministic policy gradient,D4PG)呢?请形容一下吧。散布的分布式深度确定性策略梯度算法(distributed distributional deep deterministic policy gradient,D4PG),绝对于深度确定性策略梯度算法,其优化局部如下。 (1)分布式评论员:不再只预计Q值的期望值,而是预计冀望Q值的散布,行将冀望Q值作为一个随机变量来预计。 (2)$N$步累计回报:计算时序差分误差时,D4PG计算的是$N$步的时序差分目标值而不仅仅只有一步,这样就能够思考将来更多步骤的回报。 (3)多个分布式并行演员:D4PG应用$K$个独立的演员并行收集训练数据并存储到同一个回放缓冲区中。 (4)优先教训回放(prioritized experience replay,PER):应用一个非平均概率从回放缓冲区中进行数据采样。 更多优质内容请关注公号:汀丶人工智能

June 27, 2023 · 1 min · jiezi

关于神经网络:强化学习从基础到进阶案例与实践71深度确定性策略梯度DDPG算法详解项目实战

强化学习从根底到进阶--案例与实际[7.1]:深度确定性策略梯度DDPG算法、双提早深度确定性策略梯度TD3算法详解我的项目实战1、定义算法1.1 定义模型!pip uninstall -y parl!pip install parlimport parlimport paddleimport paddle.nn as nnimport paddle.nn.functional as Fclass Actor(parl.Model): def __init__(self, n_states, n_actions): super(Actor, self).__init__() self.l1 = nn.Linear(n_states, 400) self.l2 = nn.Linear(400, 300) self.l3 = nn.Linear(300, n_actions) def forward(self, state): x = F.relu(self.l1(state)) x = F.relu(self.l2(x)) return paddle.tanh(self.l3(x))class Critic(parl.Model): def __init__(self, n_states, n_actions): super(Critic, self).__init__() self.l1 = nn.Linear(n_states, 400) self.l2 = nn.Linear(400 + n_actions, 300) self.l3 = nn.Linear(300, 1) def forward(self, state, action): x = F.relu(self.l1(state)) x = F.relu(self.l2(paddle.concat([x, action], 1))) return self.l3(x)class ActorCritic(parl.Model): def __init__(self, n_states, n_actions): super(ActorCritic, self).__init__() self.actor_model = Actor(n_states, n_actions) self.critic_model = Critic(n_states, n_actions) def policy(self, state): return self.actor_model(state) def value(self, state, action): return self.critic_model(state, action) def get_actor_params(self): return self.actor_model.parameters() def get_critic_params(self): return self.critic_model.parameters()1.2 定义教训回放from collections import dequeimport randomclass ReplayBuffer: def __init__(self, capacity: int) -> None: self.capacity = capacity self.buffer = deque(maxlen=self.capacity) def push(self,transitions): '''_summary_ Args: trainsitions (tuple): _description_ ''' self.buffer.append(transitions) def sample(self, batch_size: int, sequential: bool = False): if batch_size > len(self.buffer): batch_size = len(self.buffer) if sequential: # sequential sampling rand = random.randint(0, len(self.buffer) - batch_size) batch = [self.buffer[i] for i in range(rand, rand + batch_size)] return zip(*batch) else: batch = random.sample(self.buffer, batch_size) return zip(*batch) def clear(self): self.buffer.clear() def __len__(self): return len(self.buffer)1.3 定义智能体import parlimport paddleimport numpy as npclass DDPGAgent(parl.Agent): def __init__(self, algorithm,memory,cfg): super(DDPGAgent, self).__init__(algorithm) self.n_actions = cfg['n_actions'] self.expl_noise = cfg['expl_noise'] self.batch_size = cfg['batch_size'] self.memory = memory self.alg.sync_target(decay=0) def sample_action(self, state): action_numpy = self.predict_action(state) action_noise = np.random.normal(0, self.expl_noise, size=self.n_actions) action = (action_numpy + action_noise).clip(-1, 1) return action def predict_action(self, state): state = paddle.to_tensor(state.reshape(1, -1), dtype='float32') action = self.alg.predict(state) action_numpy = action.cpu().numpy()[0] return action_numpy def update(self): if len(self.memory) < self.batch_size: return state_batch, action_batch, reward_batch, next_state_batch, done_batch = self.memory.sample( self.batch_size) done_batch = np.expand_dims(done_batch , -1) reward_batch = np.expand_dims(reward_batch, -1) state_batch = paddle.to_tensor(state_batch, dtype='float32') action_batch = paddle.to_tensor(action_batch, dtype='float32') reward_batch = paddle.to_tensor(reward_batch, dtype='float32') next_state_batch = paddle.to_tensor(next_state_batch, dtype='float32') done_batch = paddle.to_tensor(done_batch, dtype='float32') critic_loss, actor_loss = self.alg.learn(state_batch, action_batch, reward_batch, next_state_batch, done_batch)2. 定义训练def train(cfg, env, agent): ''' 训练 ''' print(f"开始训练!") rewards = [] # 记录所有回合的处分 for i_ep in range(cfg["train_eps"]): ep_reward = 0 state = env.reset() for i_step in range(cfg['max_steps']): action = agent.sample_action(state) # 采样动作 next_state, reward, done, _ = env.step(action) agent.memory.push((state, action, reward,next_state, done)) state = next_state agent.update() ep_reward += reward if done: break rewards.append(ep_reward) if (i_ep + 1) % 10 == 0: print(f"回合:{i_ep+1}/{cfg['train_eps']},处分:{ep_reward:.2f}") print("实现训练!") env.close() res_dic = {'episodes':range(len(rewards)),'rewards':rewards} return res_dicdef test(cfg, env, agent): print("开始测试!") rewards = [] # 记录所有回合的处分 for i_ep in range(cfg['test_eps']): ep_reward = 0 state = env.reset() for i_step in range(cfg['max_steps']): action = agent.predict_action(state) next_state, reward, done, _ = env.step(action) state = next_state ep_reward += reward if done: break rewards.append(ep_reward) print(f"回合:{i_ep+1}/{cfg['test_eps']},处分:{ep_reward:.2f}") print("实现测试!") env.close() return {'episodes':range(len(rewards)),'rewards':rewards}3、定义环境OpenAI Gym中其实集成了很多强化学习环境,足够大家学习了,然而在做强化学习的利用中免不了要本人创立环境,比方在本我的项目中其实不太好找到Qlearning能学进去的环境,Qlearning切实是太弱了,须要足够简略的环境才行,因而本我的项目写了一个环境,大家感兴趣的话能够看一下,个别环境接口最要害的局部即便reset和step。 ...

June 27, 2023 · 4 min · jiezi

关于神经网络:深度学习基础入门篇10序列模型词表示OneHot编码Word-EmbeddingWord2Vec

深度学习根底入门篇[10]:序列模型-词示意{One-Hot编码、Word Embedding、Word2Vec、词向量的一些乏味利用}在NLP畛域,自然语言通常是指以文本的模式存在,然而计算无奈对这些文本数据进行计算,通常须要将这些文本数据转换为一系列的数值进行计算。那么具体怎么做的呢?这里就用到词向量的概念。 个别状况下,当咱们拿到文本数据的时候,会先对文本进行分词,而后将每个单词映射为相应的词向量,最初基于这些词向量进行计算,达到预设工作的成果,下边咱们分如下几节开展介绍词向量相干的常识。 1.One-Hot编码: 一种简略的单词编码方式在NLP畛域,如何将单词数值化呢,One-Hot编码就是一种很简略的形式。假如咱们当初有单词数量为$N$的词表,那能够生成一个长度为$N$的向量来示意一个单词,在这个向量中该单词对应的地位数值为1,其余单词对应的地位数值全副为0。举例如下: 词典: [queen, king, man, woman, boy, girl ] 图1 one-hot 编码图 假如以后词典中有以上6个单词,图1展现了其中4个单词的one-hot编码表示。这个示意是不是挺简略的,然而这种示意形式也有一些不太适合的中央。 首先,在理论利用中词表中单词的数量往往比拟多,高达几十万,甚至百万。这种状况下应用one-hot编码的形式示意一个单词,向量维度过长,同时向量会极其稠密。 其次,从图1咱们也能够看出向量之间是正交的,向量之间的点积为0,因而无奈间接通过向量计算的形式来得出单词之间的关系。直观上咱们心愿语义相近的单词之间的间隔比拟近。比方,咱们晓得,“香蕉”和“橘子”更加类似,而“香蕉”和“句子”就没有那么类似,同时,“香蕉”和“食物”,“水果”的类似水平,可能介于“橘子”和“句子之间”。 2.Word Embedding: 一种分布式单词示意形式前边咱们谈到了one-hot编码的缺点,这一节咱们来聊另一种分布式的示意形式:Word Embedding,看他是怎么解决这些问题的。 假如每个单词都能够用$n$个特色进行示意,即能够应用这$n$个特色来刻画每个单词,如图2所示,咱们应用图2中的这5个特色来刻画”狗”、”蜈蚣”、”君子兰”和”填空”这几个词。 图2 单词示意样例 显然,有了这些特色去构建词向量,咱们可能依据这些特色比拟容易地去划分单词的类别,比方”狗”和”蜈蚣”均是动物,在这个角度上说是一类的,他们之间的间隔应该要比”狗”和”君子兰”近。 咱们在回到词向量上来,依照同样的想法,能够应用这$n$个特色来刻画每个单词,并且这$n$个特色是浮点类型的,这样能够拓宽示意范畴。当咱们将视角切换到$n$维空间,那么每个词向量其实就相当于是该$n$维空间的一个点,相当于是将该单词嵌入到该空间中,这也是Word Embedding的原始意义。 当然咱们通常是无奈穷举具体的特色类别的,所以在NLP畛域个别间接将模型表示为长度为$n$的向量让模型去训练(只是每个向量维度具体代表什么含意是不好去解释的)。但好消息是通过适合的词向量学习算法,是能够比拟好的学习到单词的语义信息的,语义相近的单词之间的间隔会比拟近,语义不同的单词之间间隔会比拟远。 图3 词向量示意图 图3展现了对于词向量的一些例子,当咱们将词向量训练好之后,咱们能够看到France, England, Italy等国家之间比拟近,并造成一个小簇;dog, dogs,cat,cats造成一个小簇。簇内的单词间隔个别会比拟近,不同簇的单词间隔会比拟远。 3.Word2Vec: 一种词向量的训练方法前边咱们貌似提出了一个对词向量比拟好的冀望,然而如何去学习这些词向量,达到这种成果呢?这就是本节探讨的话题,本节将通过Word2Vec为大家解说词向量的训练方法。 简略地讲,Word2Vec是建模了一个单词预测的工作,通过这个工作来学习词向量。假如有这样一句话Pineapples are spiked and yellow,当初假如spiked这个单词被删掉了,当初要预测这个地位本来的单词是什么。 Word2Vec自身就是在建模这个单词预测工作,当这个单词预测工作训练实现之后,那每个单词对应的词向量也就训练好了。下边咱们来具体看看吧。 3.1 Word2Vec概述¶在正式介绍之前,咱们先来科普一下Word2Vec,Word2vec是2013年被Mikolov提出来的词向量训练算法,在论文中作者提到了两种word2vec的具体实现形式:间断词袋模型CBOW和Skip-gram,如图4所示。 图4 CBOW和Skip-gram的比照 图4中应用了这句话作为例子:Pineapples are spiked and yellow,在这句话中假如中心词是spiked,这个单词的上下文是其余单词:Pineapples are and yellow。 间断词袋模型CBOW的建模形式是应用上下文单词来预测spiked这个单词,当然图片上展现的是spikey,相当于是预测错了。Skip-gram正好反过来,它是通过中心词来预测上下文。 一般来说,CBOW比Skip-garm训练快且更加稳固一些,然而,Skip-garm不会刻意地回避生僻词(即呈现频率比拟低的词),比CBOW可能更好地解决生僻词。在本节呢,咱们将以Skip-garm的形式探讨词向量的训练过程。 3.2 Skip-gram训练词向量原理前边咱们说到,Skip-gram是通过中心词来预测上下文。咱们还是以Pineapples are spiked and yellow为例进行解说,如图5所示,中心词是spiked,上下文是Pineapples are and yellow,在Skip-gram中,上下文是咱们要预测的词,因而这些词也叫指标词。 ...

May 23, 2023 · 1 min · jiezi

关于神经网络:深度学习基础入门篇93卷积算子空洞卷积分组卷积可分离卷积可变性卷积等详细讲解以及应用场景和应用实例剖析

深度学习根底入门篇[9.3]:卷积算子:空洞卷积、分组卷积、可拆散卷积、可变性卷积等具体解说以及利用场景和利用实例分析1.空洞卷积(Dilated Convolution)1.1 空洞卷积提出背景在像素级预测问题中(比方语义宰割,这里以FCN[1]为例进行阐明),图像输出到网络中,FCN先如同传统的CNN网络一样对图像做卷积以及池化计算,升高特色图尺寸的同时增大感触野。然而因为图像宰割是一种像素级的预测问题,因而咱们应用转置卷积(Transpose Convolution)进行上采样使得输入图像的尺寸与原始的输出图像保持一致。综上,在这种像素级预测问题中,就有两个关键步骤:首先是应用卷积或者池化操作减小图像尺寸,增大感触野;其次是应用上采样扩充图像尺寸。然而,应用卷积或者池化操作进行下采样会导致一个十分重大的问题:图像细节信息被失落,小物体信息将无奈被重建(假如有4个步长为2的池化层,则任何小于 $2^4$pixel 的物体信息将实践上无奈重建)。 1.2 空洞卷积及其利用空洞卷积(Dilated Convolution),在某些文献中也被称为扩张卷积(Atrous Deconvolution),是针对图像语义宰割问题中下采样带来的图像分辨率升高、信息失落问题而提出的一种新的卷积思路。空洞卷积通过引入扩张率(Dilation Rate)这一参数使得同样尺寸的卷积核取得更大的感触野。相应地,也能够使得在雷同感触野大小的前提下,空洞卷积比一般卷积的参数量更少。 空洞卷积在某些特定的畛域有着十分宽泛的利用,比方: 语义宰割畛域:DeepLab系列[2,3,4,5]与DUC[6]。在DeepLab v3算法中,将ResNet最初几个block替换为空洞卷积,使得输入尺寸变大了很多。在没有增大运算量的前提下,维持分辨率不升高,取得了更密集的特色响应,从而使得还原到原图时细节更好。指标检测畛域:RFBNet[7]。在RFBNet算法中,利用空洞卷积来模仿pRF在人类视觉皮层中的离心率的影响,设计了RFB模块,从而加强轻量级CNN网络的成果。提出基于RFB网络的检测器,通过用RFB替换SSD的顶部卷积层,带来了显著的性能增益,同时依然放弃受控的计算成本。语音合成畛域:WaveNet[8]等算法。1.3 空洞卷积与规范卷积的区别对于一个尺寸为 $3\times{3}$ 的规范卷积,卷积核大小为 $3\times{3}$ ,卷积核上共蕴含9个参数,在卷积计算时,卷积核中的元素会与输出矩阵上对应地位的元素进行逐像素的乘积并求和。而空洞卷积与规范卷积相比,多了扩张率这一个参数,扩张率控制了卷积核中相邻元素间的间隔,扩张率的扭转能够管制卷积核感触野的大小。尺寸为 $3\times{3}$ ,扩张率别离为 $1,2,4$ 时的空洞卷积别离如 图1,图2,图3所示。 图1 扩张率为1时的3*3空洞卷积 扩张率为1时,空洞卷积与规范卷积计算形式一样。 图2 扩张率为2时的3*3空洞卷积 图3 扩张率为4时的3*3空洞卷积 扩张率大于1时,在规范卷积的根底上,会注入空洞,空洞中的数值全副填0。 1.4 空洞卷积的感触野对于规范卷积而言,当规范卷积核尺寸为 $3\times{3}$ 时,咱们在输出矩阵上间断进行两次规范卷积计算,失去两个特色图。咱们能够察看不同层数的卷积核感触野大小,如 图4 所示。 图4 规范卷积的感触野示例 其中,$3\times3$卷积对应的感触野大小就是$3\times3$,而通过两层$3\times3$的卷积之后,感触野的大小将会减少到$5\times5$。 空洞卷积的感触野计算形式与规范卷积大同小异。因为空洞卷积实际上能够看作在规范卷积核内填充’0’,所以咱们能够将其设想为一个尺寸变大的规范卷积核,从而应用规范卷积核计算感触野的形式来计算空洞卷积的感触野大小。对于卷积核大小为 $k$ ,扩张率为 $r$ 的空洞卷积,感触野 $F$ 的计算公式为: $$F = k + (k-1)(r-1)$$ 卷积核大小 $k=3$ ,扩张率 $r=2$ 时,计算形式如 图5 所示。 图5 空洞卷积的感触野示例 其中,通过一层空洞卷积后,感触野大小为$5\times5$,而通过两层空洞卷积后,感触野的大小将会减少到$9\times9$。 参考文献 ...

May 23, 2023 · 5 min · jiezi

关于神经网络:深度学习基础入门篇91卷积之标准卷积卷积核特征图卷积计算填充感受视野多通道输入输出卷积优势和应用案例讲解

深度学习根底入门篇[9.1]:卷积之规范卷积:卷积核/特色图/卷积计算、填充、感触视线、多通道输入输出、卷积劣势和利用案例解说1.卷积提出背景在全连贯网络[1]中,一张图片上的所有像素点会被开展成一个1维向量输出网络,如 图1 所示,28 x 28的输出数据被开展成为784 x 1 的数据作为输出。 图1 全连贯网络图 这样往往会存在如下两个问题: 1. 输出数据的空间信息被失落。 空间上相邻的像素点往往具备类似的RGB值,RGB的各个通道之间的数据通常密切相关,然而转化成1维向量时,这些信息被失落。如 图2 所示,空间地位相邻的两个点A和B,转化成1维向量后并没有体现出他们之间的空间关联性。 图2 图片转换为1维向量 2. 模型参数过多,容易产生过拟合。 因为每个像素点都要跟所有输入的神经元相连接。当图片尺寸变大时,输出神经元的个数会按图片尺寸的平方增大,导致模型参数过多,容易产生过拟合。例如:对于一幅$1000\times 1000$ 的输出图像而言,如果下一个隐含层的神经元数目为$10^6$ 个,那么将会有$1000\times 1000\times 10^6=10^{12}$ 个权重参数,能够设想,如此大规模的参数量使得网络很难训练。 为了解决上述问题,引入卷积(Convolution)来对输出的图像进行特征提取。卷积的计算范畴是在像素点的空间邻域内进行的,因而能够利用输出图像的空间信息;此外,因为卷积具备部分连贯、权重共享等个性,卷积核参数的数目也远小于全连贯层。 2.卷积核 / 特色图 / 卷积计算卷积核(kernel):也被叫做滤波器(filter),假如卷积核的高和宽别离为$k_h$和$k_w$,则将称为$k_h\times k_w$卷积,比方$3\times5$卷积,就是指卷积核的高为3, 宽为5。卷积核中数值为对图像中与卷积核同样大小的子块像素点进行卷积计算时所采纳的权重。 卷积计算(convolution):图像中像素点具备很强的空间依赖性,卷积(convolution)就是针对像素点的空间依赖性来对图像进行解决的一种技术。 特色图(feature map):卷积滤波后果在卷积神经网络中被称为特色图(feature map)。 2.1 卷积计算利用示例在卷积神经网络中,卷积层的实现形式实际上是数学中定义的相互关 (cross-correlation)运算,具体的计算过程如 图3 所示,每张图的左图示意输出数据是一个维度为3 x 3的二维数组;两头的图示意卷积核是一个维度为2 x 2的二维数组。 图3 卷积计算过程 如图3(a)所示:右边的图大小是$3\times3$,示意输出数据是一个维度为$3\times3$的二维数组;两头的图大小是$2\times2$,示意一个维度为$2\times2$的二维数组,咱们将这个二维数组称为卷积核。先将卷积核的左上角与输出数据的左上角(即:输出数据的(0, 0)地位)对齐,把卷积核的每个元素跟其地位对应的输出数据中的元素相乘,再把所有乘积相加,失去卷积输入的第一个后果:$$0\times1 + 1\times2 + 2\times4 + 3\times5 = 25 \ \ \ \ \ \ \ (a)$$ ...

May 22, 2023 · 4 min · jiezi

关于神经网络:图神经网络统一图算子抽象-uGrapher大幅提高计算性能

开篇近日,阿里云机器学习PAI平台对于图神经网络对立高性能IR的论文《uGrapher》被零碎畛域顶会ASPLOS 2023接管。 为了解决以后图神经网络中框架中不同的图算子在不同图数据上动态kernel的性能问题,uGrapher通过将所有图算子形象为对立的两头表达形式,解耦图算子的计算和调度,并定义了在GPU上优化图算子的设计空间,以针动态变化的图算子和图数据自适应的生成并行执行策略,为图神经网络中的图算子提供高性能的计算反对。比照DGL [1], PyG[2], GNNAdvisor[3],uGrapher均匀能够获得3.5倍的性能晋升。 背景近年来,图神经网络(Graph Neural Networks, GNNs)因其在非欧几里德空间中对图构造进行学习和推断的弱小能力而受到学术界和产业界的宽泛关注。GNNs将基于DNN的特色变换和基于图的操作联合起来,沿着图构造流传和聚合信息。现有的GNN框架如DGL和PyTorch-Geometric(PyG)扩大了DNN 框架(如TensorFlow 和PyTorch),并引入了“音讯”这一概念,它是与每个边相关联的特征向量的两头值。对于图 上的任何操作,能够依据数据的属性和数据挪动的方向分为三个阶段,即音讯创立、音讯聚合和特色更新,公式化如下图: 其中,和是顶点索引,是和之间的边索引;是顶点的特征向量,是边上的音讯。 uGrapher将须要遍历输出图构造的操作符定义为图算子。图算子包含“音讯创立”、“音讯聚合”和“交融聚合”三类。其中,“交融聚合”是指当“音讯创立”是一个简略的复制操作时,它能够与“音讯聚合”交融在一起,以防止冗余拜访,DGL和PyG采纳了这种交融优化。 以GAT模型为例,它蕴含几个具备不同计算模式的图操作符。第一个“音讯创立”操作十分轻量级,它将每个边的源顶点和指标顶点的特色相加作为音讯以计算注意力权重;第二个“交融聚合”操作首先从源顶点复制特色,而后逐边乘注意力权重,最初将变换后的边上的音讯聚合为顶点的新特色。第二个操作比第一个操作更加计算密集。 因为图构造引起的不规则内存行为,再加上这些图算子中简单的算术计算,图神经网络中图算子的高性能计算成为重要挑战。 现有的图神经网络框架依附手写动态kernel来实现图算子的计算。然而,随着图神经网络算法演进,图算子的可变性和复杂性一直减少,其计算也变得更加简单;同时,不同散布的图数据作为输出也给图神经网络的计算带来了特有的复杂性,这导致动态算子难以维持较好的性能。因而,本文摸索了如何在变动的图数据和图模型上进行图算子的计算优化。 挑战(1)图神经网络引入了图算子的复杂性和图数据的变动性两大特色,导致了图算子计算优化上的难题。 下表依据输出和输入数据类型将DGL反对的160个图操作符进行了分类。即便具备雷同的输出或者输入数据类型,图算子也能够执行不同的计算模式。图算子的复杂性导致很难找到动态的形式为所有图算子的计算操作提供高性能反对。 真实世界中的图数据集有很大的差别。图的规模,即顶点和边的数量,图的均衡水平,即邻接矩阵行的非零值的标准差,以及特色和类大小,这些属性在不同的图之间有显著的差别。而这些差别影响了图算子的内存应用和计算复杂性。 (2)因为不足系统优化办法,现有GNN框架应用的底层CUDA kernel存在低效和不足灵活性的问题。 DGL 在反对上文中的消息传递编程接口时调用动态CUDA kernel,这些动态kernel不能适应变动的计算场景。比方,在执行不均衡图时,GPU 的低占用率导致了硬件资源的节约。当执行小图时,GPU 性能通常受到并行性的限度,而执行大图时,因为低局部性,拜访带宽成为瓶颈。同时,这些指标在不同图算子之间也会有所差别。 破局uGrapher应用嵌套循环作为图算子的调度表白,并容许用户定制输出张量和不同阶段的函数操作来示意不同的图算子运算。 下图为面向图神经网络中的图算子对立的形象细节。 edge_op实现了边上的访存和计算的函数示意,而gather_op实现了边到顶点的合并函数示意。另外还有三个输出张量,能够为源顶点嵌入张量(Src_V),目的地顶点嵌入张量(Dst_V),边嵌入张量(Edge),以及NULL的任意一种。 张量的数据类型还确定了循环计算中不同的寻址模式(第10 至12 行)。 上面的公式正式定义了uGrapher的对立形象,其中,是edge_op 函数, 是gather_op 函数。该形象捕获了图算子的残缺语义,包含其计算和内存挪动模式。 依据图算子对立的形象,uGrapher构建了算子优化的设计空间,以实现高性能的图算子执行。 uGrapher应用局部性、并行性和工作效率来形容GPU上图算子性能的指标。对嵌套循环利用tiling 或者blocking 技术能够进步图算子的局部性;通过启动更多的线程、warp 或线程块能够进步图算子的并行性;工作效率用额定开销的倒数示意,同一运算符的不同执行策略可能会引入额定的计算,例如地址计算等,共享顶点的边并行计算可能须要原子指令。 现有图解决零碎中有两种经典并行化策略:线程-顶点和线程-边并行。前者升高了并行性,但进步了输入数据的重用性和局部性。后者升高了工作效率,因为可能须要原子更新操作。 因为GNN 中的顶点/边特色是向量,GNN减少了特色维度的并行化策略,为warp-顶点和warp-边,绝对线程-顶点/边策略,能够启动更多的warp,从而减少并行性。然而,因为每个warp 的缓存容量缩小,这个策略也会侵害局部性。 因而,没有一种繁多的策略能够同时进步这三个指标,uGrapher通过上述对立的IR表白,设计了对立的高性能计算接口,来摸索优化空间,进行性能的衡量。整体架构如下图所示。 uGrapher提供的图算子对立高性能计算接口设计如下图所示。 uGrapher 接口蕴含三个参数:graph_tensor,示意图数据;op_info,用于传递edge_op、gather_op 和输出张量的计算信息;parallel_info,用于指定并行化策略。uGrapher 的接口设计将算子计算、图数据和并行化策略拆散,使得用户能够通过手动,或者针对不同的算子和图构造提出本人的启发式算法来抉择执行策略。同时,当用户未指定任何并行化策略时,uGrapher会利用LightGBM[4]训练决策模型,抉择并行化空间中的最优策略来主动调整到最佳并行化策略,以在不同的GPU架构和图数据集上为所有图神经网络中的图算子提供专门和最优的计算调度。 uGrapher实现了每种并行化策略的CUDA 内核模板,并为每种图算子保留设施函数接口,并实现了端到端的代码生成,蕴含了算子合并和设施函数生成,以反对灵便和高效的算在实现。更多的细节请浏览咱们ASPLOS 2023的论文。 目前,咱们正在将uGrapher的要害设计集成进PAI自研的大规模图神经网络框架GraphLearn中,从而为工业级别的图神经网络应用带来性能减速。 第五板块:论文名字: uGrapher: High-Performance Graph Operator Computation via Unified Abstraction for Graph Neural Networks ...

March 28, 2023 · 1 min · jiezi

关于神经网络:独立产品灵感周刊-DecoHack-050-基于-ChatGPT-的-API-能做什么产品

ChatGPT 的 API 3.5 凋谢过来了一周,果然和料想的一样,接入 API 的产品爆炸式地呈现了十分多,很多产品曾经做的十分好用了,在很多场景不便了太多。本期整顿了一些做的很不错的产品。 本周刊记录乏味好玩的独立产品设计开发相干内容,每周公布,往期内容同样精彩,感兴趣的搭档能够点击订阅我的周刊。为保障每期都能收到,倡议邮件订阅。欢送通过 Twitter 私信举荐或投稿。 产品举荐1. monica.imMonica 是一款由 ChatGPT API 提供反对的 chrome 扩大程序,旨在成为您的集体 Al 助手,轻松聊天和撰写文案。上线就曾经取得了 ProductHunt 第二的好问题,中国的团队出品。产品也做的十分简洁好用。 2. 一键总结 哔哩 音视频内容作者@Jimmy_JingLv 的产品,上线几天用户量就冲破了几万,AI 主动总结 B站 视频内容,基于ChatGPT 智能提取并总结字幕,很有用。开源的。也看到另外一个相似的浏览器插件 Summary for Bilibili。 3. roamaround.guide这是一个帮忙你制订旅行打算的产品,基于ChatGPT,能够展现更多的内容。同时也能够在 iPhone 上体验 TestFlight 版本。 4. GPT-3 DEMO这是一个导航网站,有对于 ChatGPT、生成式 AI 和 GPT-3 的应用程序整顿。 5. Speak这个产品我也关注很久了,是 OpenAI 投资的亲儿子出品的学习英语的产品,我也深度应用了一下,基于 ChatGPT 的英语学习是真的很不错,不过这个产品目前只做了日语和韩语的课程,并且订阅曾经做的很成熟了。期待开发中文课程。也能够预感英语学习类型的软件会有一次反动了,之前花大笔钱做课程当初能够省很多钱了。 6. ChatSonic Chrome Extension这个浏览器插件能够用来不便写邮件,写推文,间接放到了产品的流程中,十分定制的产品了,做的很不错, 7. chatgpt-sidebar这也是一个快捷操作的插件,抉择任何网页上的文本,能够疾速总,翻译,查看语法,重写等等操作。 8. Melany AI这个网站基于 ChatGPT 提供收费的集体健身和养分教练服务,随时随地向她征询无关健身和养分的问题,无需登录或装置应用程序。另外一个付费的产品 MikeAl 做的性能更多,分了膳食打算,锤炼打算。健身打算这个方向也 ChatGPT 了。 ...

March 6, 2023 · 2 min · jiezi

关于神经网络:深度学习入门篇-常用的经典神经网络模型

神经网络,是模仿生物神经网络进行信息处理的一种数学模型。它以对大脑的生理研究成果为根底,其目标在于模仿大脑的某些机理与机制,实现一些特定的性能。神经网络是目前最火的钻研方向深度学习的根底,本文将神经网络分成三个次要类别,并具体介绍了每个类别的次要神经网络模型,读完本文你将能迅速把握罕用的经典神经网络模型,属于深度学习的根底入门篇。 一般来说,神经网络能够分为三种次要类型:前馈神经网络、反馈神经网络和图神经网络。上面咱们将别离开展介绍。 1.前馈神经网络 前馈神经⽹络(feedforward neural network)是⼀种简略的神经⽹络,也被称为多层感知机(multi-layer perceptron,简称MLP),其中不同的神经元属于不同的层,由输⼊层-暗藏层-输入层形成,信号从输⼊层往输入层单向传递,两头无反馈,其目标是为了拟合某个函数,由⼀个有向无环图示意,如下:前馈神经网络结构图 前馈神经⽹络中蕴含激活函数(sigmoid函数、tanh函数等)、损失函数(均⽅差损失函数、穿插熵损失函数等)、优化算法(BP算法)等。常⽤的模型构造有:感知机、BP神经⽹络、全连贯神经⽹络、卷积神经⽹络、RBF神经⽹络等。 感知机 感知器,也可翻译为感知机,是Frank Rosenblatt在1957年就任于Cornell航空实验室(Cornell Aeronautical Laboratory)时所创造的一种人工神经网络。它能够被视为一种最简略模式的前馈式人工神经网络,是一种二元线性分类器。 感知机的次要特点是构造简略,对所能解决的问题存在着收敛算法,并能从数学上严格证实,从而对神经网络钻研起了重要的推动作用。 BP神经网络 BP(back propagation)神经网络是1986年由Rumelhart和McClelland为首的科学家提出的概念,是一种依照误差逆向流传算法训练的多层前馈神经网络,是利用最宽泛的神经网络模型之一 。 BP算法的根本思维是:学习过程由信号的正向流传和误差的反向流传两个过程组成。 正向流传时,把样本的特色从输出层进行输出,信号通过各个暗藏层的解决后,最初从输入层传出。对于网络的理论的输入与冀望输入之间的误差,把误差信号从最初一层逐层反传,从而取得各个层的误差学习信号,而后再依据误差学习信号来修改各层神经元的权值。 全连贯神经网络 全连贯神经网络是一种多层的感知机构造。每一层的每一个节点都与上上层节点全副连贯,这就是”全连贯“的由来。整个全连贯神经网络分为输出层,暗藏层和输入层,其中暗藏层能够更好的拆散数据的特色,然而过多的暗藏层会导致过拟合问题。 卷积神经网络(Convolutional Neural Networks, CNN)是一类蕴含卷积运算且具备深度构造的前馈神经网络(Feedforward Neural Networks)。相比晚期的BP神经网络,卷积神经网络最重要的个性在于“部分感知”与“参数共享”。整体架构:输出层——卷积层——池化层——全连贯层——输入层 卷积神经网络结构图 输出层:以图片为例,输出的是一个三维像素矩阵,长和宽示意图像的像素大小,深度示意色调通道(黑白为1,RGB黑白为3)。 卷积层:卷积层也是一个三维矩阵,它的每个节点(单位节点矩阵)都是上一层的一小块节点(子节点矩阵)加权得来,一小块的尺寸个别取33或55。此层的作用是对每一小快节点进行深入分析,从而提取图片更高的特色。 池化层:池化层不会扭转三维矩阵的深度,其作用是放大矩阵,从而缩小网络的参数。全连贯层:跟全连贯神经网络作用一样。 Softmax层:失去以后样例属于不同品种的概率分布,并实现分类。 卷积神经网络(CNN)具备一些传统技术所没有的长处: (1)良好的容错能力、并行处理能力和自学习能力,可解决环境信息简单,背景常识不分明,推理规定不明确状况下的问题;(2)它容许样本有较大的缺损、畸变,运行速度快,自适应性能好,具备较高的分辨率;(3)它是通过构造重组和缩小权值将特色抽取性能交融进多层感知器,省略辨认前简单的图像特色抽取过程。RBF神经网络径向神经网络(RBF:Radial basis function)是一种以径向基核函数作为激活函数的前馈神经网络。RBF神经⽹络是一种三层神经网络,其包含输出层、隐层、输入层。从输出空间到隐层空间的变换是非线性的,而从隐层空间到输入层空间变换是线性的。流图如下: 2.反馈神经网络反馈神经网络(feedback neural network)的输入不仅与以后输出以及网络权重无关,还和网络之前的输出无关。它是一个有向循环图或是无向图,具备很强的联想记忆能力和优化计算能力。 常⽤的模型构造有:RNN、Hopfield⽹络、受限玻尔兹曼机、LSTM等。反馈神经网络结构图 循环神经网络 循环神经网络(recurrent neural network,简称RNN)源自于1982年由Saratha Sathasivam 提出的霍普菲尔德网络,是指在全连贯神经网络的根底上减少了前后时序上的关系,能够更好地解决比方机器翻译等的与时序相干的问题。RNN神经网络的构造如下:循环神经网络的结构图 RNN之所以称为循环神经网络,即一个序列以后的输入与后面的输入也无关。具体的表现形式为网络会对后面的信息进行记忆并利用于以后输入的计算中,即暗藏层之间的节点不再无连贯而是有连贯的,并且暗藏层的输出不仅包含输出层的输入还包含上一时刻暗藏层的输入。 RNN用于解决训练样本输出是间断的序列,且序列的长短不一的问题,比方基于工夫序列的问题。根底的神经网络只在层与层之间建设了权连贯,RNN最大的不同之处就是在层之间的神经元之间也建设的权连贯。 Hopfield⽹络 Hopfield神经网络是一种单层相互全连贯的反馈型神经网络。每个神经元既是输出也是输入,网络中的每一个神经元都将本人的输入通过连贯权传送给所有其它神经元,同时又都接管所有其它神经元传递过去的信息。即:网络中的神经元在t时刻的输入状态实际上间接地与本人t-1时刻的输入状态无关。神经元之间互连贯,所以失去的权重矩阵将是对称矩阵。 受限玻尔兹曼机 玻尔兹曼机是一大类的神经网络模型,然而在理论利用中应用最多的则是受限玻尔兹曼机(RBM)。受限玻尔兹曼机(RBM)是一个随机神经网络(即当网络的神经元节点被激活时会有随机行为,随机取值)。它蕴含一层可视层和一层暗藏层。在同一层的神经元之间是互相独立的,而在不同的网络层之间的神经元是相互连接的(双向连贯)。在网络进行训练以及应用时信息会在两个方向上流动,而且两个方向上的权值是雷同的。然而偏置值是不同的(偏置值的个数是和神经元的个数雷同的)。 受限玻尔兹曼机的构造如下: LSTM 长短期记忆网络 LSTM(long short-term memory)是 RNN 的一种变体,其外围概念在于细胞状态以及“门”构造。细胞状态相当于信息传输的门路,让信息能在序列连中传递上来。你能够将其看作网络的“记忆”。实践上讲,细胞状态可能将序列处理过程中的相干信息始终传递上来。因而,即便是较早工夫步长的信息也能携带到较后工夫步长的细胞中来,这克服了短时记忆的影响。信息的增加和移除咱们通过“门”构造来实现,“门”构造在训练过程中会去学习该保留或忘记哪些信息。 3.图神经网络 图(graph)是⼀种在拓扑空间内按图构造组织来关系推理的函数汇合,包含社交⽹络、常识图谱、分⼦图神经⽹络等。图构造示例 图神经网络就是将图数据和神经网络进行联合,在图数据下面进行端对端的计算。图神经网络间接在图上进行计算,整个计算的过程,沿着图的构造进行,这样解决的益处是可能很好的保留图的构造信息。 图神经网络通常有以下几种网络模型:图卷积网络、图自编码器、图生成网络、图时空网络、图注意力网络。 图卷积网络(Graph Convolutional Networks, GCN) ...

December 29, 2022 · 1 min · jiezi

关于神经网络:深度学习求解PDE以及应用综述

前言自己目前曾经研究生三年级了,也要去读博士了,前面可能就不做这个方向了,也就是将深度学习引入PDE的求解中。我进入这个畛域的动机是硕士论文一开始是做PDE的智能管制,然而管制问题大家都晓得,不过还是把传统的那一套灌水到PDE上。起初我就想做一些深度学习的货色,正好和PDE联合在一起,PDE的求解其实是上游工作,针对PDE的各种各样的利用将求解作为上游工作,这样·就造成了一个闭环,就像我目前关注的PDE束缚下的最优控制问题。 其实要来到这个畛域我还是十分不舍的,这个畛域我意识是非常有意义的,然而博士的方向还是要听博导,所以我感觉做个文献综述来启发这个畛域的后来者。具体能够参考我的github我的项目目前还没有开始,前面我会逐步更新,如果有脱漏,也请及时分割我进行更新。上面我将论述我的思路,同样如果有不妥之处也请及时私信和我沟通。最初我须要进行申明,我次要对顶https://github.com/bitzhangcy...刊顶会上的论文进行收集,并对一些非顶刊顶会论文进行了主观筛选,如果有好的工作被脱漏,敬请了解。 对于Physics Informed Machine Learning这一块我还是举荐去读上面的综述,包含陆路博士在内的作者的确提出了一些远见卓识,有一些十分有启发性的观点 Karniadakis, G. E., Kevrekidis, I. G., Lu, L., Perdikaris, P., Wang, S., & Yang, L. (2021). Physics-informed machine learning. Nature Reviews Physics, 3(6), 422-440.综述思路对于这个畛域,我大略进行了一些分类,将一些支流的办法首先进行分类 DeepONetFourier Neural NetworkGraph Neural NetworkMulti-Scale Grid这前面我会介绍一些实践剖析和后果 DeepONetGreen FunctionAttention MechanismDiscretation Invariance还有一些比拟有意思的后果和钻研内容,这个方向蕴含了特地多的内容,很多钻研尽管目前看来还是很一般的,然而我置信将来这些目前还比拟小众的方向将来会焕发全新的活力。 最初就是一些利用问题,这方面的文章特地多,必定没法进行全面总结,我尽量全面的收集顶会顶刊上的论文,对于一些非顶刊的论文可能会主观疏忽,敬请体谅。 我应该会依照这个思路对这个畛域进行陈说,这是我觉得很有意思的思路,然而还不欠缺,如果有趣味参加这件事的兄弟们能够私信我一起探讨提高。 总结进入这个畛域有大半年了,读了很多人的论文,能够看出这个畛域将来必定庸庸碌碌。然而目前的钻研指标还是存在一些问题,我还没有能力进行评估,目前机器学习顶刊Journal of Machine Learning Research和顶会曾经发表了这个方向的大量成绩。这里强烈推荐三个人: 陆路博士,他的个人主页下面有很多很贵重的钻研思路;George Em Karniadakis传授的个人主页也是强烈推荐,他在PDE和ODE上做出了突出贡献Anima Anandkumar传授个人主页率领了傅里叶算子的工作,也和Nvidia有深度单干,置信将来可能率领这个畛域和业界进行密切协作行文至此,还是有一些不舍,放弃一个酷爱的钻研方向是苦楚,如果将来可能成为一个PI,我置信我还是会率领一部分学生去在这个畛域进行攻坚,美国军方在这个方向曾经投入了数千万的资金。加油吧,起初的钻研人员!

November 4, 2022 · 1 min · jiezi

关于神经网络:基于积分自编码器网络的离散不变学习

前言最近机器学习顶刊Journal of Machine Learning Research发表了很多对于PDE深度学习的实践根底,能够看出这个畛域将会焕发出生命力,该畛域与数学联合较严密。PDE的深度学习办法很难避开的就是离散化。如何去学习离散过程中产生的不变量是一个重要的话题,这篇文章为了解这个问题关上了全新的视角。 Ong, Y. Z., Shen, Z., & Yang, H. (2022). Integral Autoencoder Network for Discretization-Invariant Learning. Journal of Machine Learning Research, 23(286), 1-45.离散不变学习的外围就是针对任何形式的离散,神经网络都不须要从新训练,一种现有的办法就是DeepOnet为代表的网格无关的算子学习办法。然而本文中的办法力求去解决离散办法中的离散不变,也即训练好的神经网络能够针对任意离散格局的数据,这样能够进步图网络等办法的泛化能力。 前面的局部我尽量以较为简单易懂的形式去形容,会疏忽数学证实等理论性较强的过程。 问题形容让\( S_x=\left( x_j \right) _{j=1}^{s_x}\subset [0,1]^{d_x}\)和\( S_y=\left(y_j \right) _{j=1}^{S_y}\subset [0,1]^{d_y} \)别离\(\Omega _x\)和 \(\Omega _y\)域上的无限采样点,对应的数值观测值为\( \bar{f}=\left( f\left( x_1 \right) ,...,f\left( x_{s_x} \right) \right)\)和\(\bar{g}=\left( g\left( y_1 \right) ,...,g\left( y_{s_y} \right) \right)\)。特地的,对于不同组的观测值,采样点的数量\( s_x\)和\( s_y\)都能够是不同的。 传统的神经网络或者多层感知机只能解决具备固定输出维度的数据,对于CV工作来说,所有输出的图片都必须先做归一化解决。 这篇文章的外围就是基于神经网络的非线性积分变换,能够将具备任意维度的输出转换进入具备固定维度的空间中,也就是 $$(\bar{T}f)(z)=\int_{\Omega _x}{\bar{K}}(f(x),x,z)f(x)dx,\quad z\in \Omega _z,\\(\bar{T}f)\left( z_j \right) =\frac{1}{s}\sum_{i=1}^s{\bar{K}}\left( f\left( x_i \right) ,x_i,z_j \right) f\left( x_i \right) ,\quad z_j\in S_z.$$ ...

October 22, 2022 · 2 min · jiezi

关于神经网络:DatenLord前沿技术分享-No4

1、演讲题目基于SpinalHDL的神经网络加速器 2、演讲工夫2022年10月2日 上午10:30 3、演讲人刘玮,天津工业大学 计算机科学与技术业余 研三 4、引言深度学习曾经影响到了咱们生存的方方面面,构建一个灵便的,可扩大的深度学习加速器是不可或缺的。本次分享将从深度学习,软硬件协同设计等方面进行开展。 5、内容简介SpinalHDL作为一门能够放慢研发速度的一门语言,与深度学习的疾速倒退是相适配的。咱们采纳SpinalHDL设计了一个CNN的加速器,采取了8bit量化,反对Conv,MaxPooling,Concat等诸多算子,提供stream的数据接口不便扩大,目前曾经测试了YOLOv4tiny,YOLOX,YOLOv4等多个神经网络。 6、直播预约欢迎您通过微信视频号预约直播,或者登陆腾讯会议观看直播: 会议号:772-6477-5345

September 30, 2022 · 1 min · jiezi

关于神经网络:新书上市-连接组向人类科学的最终前沿进军

人类的大脑一点都不比浩瀚的宇宙简略,它是一个外在宇宙,说钻研人类大脑的神经科学(neuroscience)为“人类迷信的最终前沿”也毫不为过。 本文为《神奇的连贯组》举荐序《向人类迷信的最终前沿进军》 仇子龙 中国科学院脑科学与智能技术卓越翻新核心(神经科学研究所)蒲慕明 上海脑科学与类脑钻研核心 人类大脑重约 3 磅(约 1.4 千克),被戏称为“三磅的宇宙”(three-pound niverse)。因为具备高度发达的大脑,咱们成为万物之灵,发明了灿烂的文化、革新了这个世界,同时还能够低头俯视浩瀚星空,昂首察看身边万物,摸索天然的神秘。咱们的大脑中有数百亿个神经细胞(神经元),每个神经元与上千的其余神经元相连接,通过电信号与化学信号将咱们感触到的外界信息传递给大脑,大脑可做出即时反馈,当然也可沉思和摸索宇宙万物的法则。 美国驰名系列科幻电影《星际迷航》( Star Trek )中有一部名为 The Final Frontier ,直译是“最终前沿”,意指摸索无穷宇宙为人类迷信的最终前沿。其实,人类的大脑一点都不比浩瀚的宇宙简略,它是一个外在宇宙,说钻研人类大脑的神经科学(neuroscience)为“人类迷信的最终前沿”也毫不为过。 “连贯组打算”与各国“脑打算”本书是美国普林斯顿大学驰名神经科学家承现峻传授的优良科普作品,他用活泼的笔触刻画了世界各国神经科学家正在发展的一项摸索大脑神秘的雄伟工程——连贯组(connectome)打算。连贯组打算心愿全面意识大脑中各类神经元之间的连贯。 咱们曾经晓得人类大脑中的神经元约 1000 亿个,其中至多有几百种不同的类型,而每个神经元又同时与千个以上的神经元造成传递信息的连接点(突触),所谓大脑的连贯组打算,是对各脑区、各种类型神经元之间的相互连接状况进行全面的钻研与剖析。可想而知,这是一项何等艰巨的工作,因为须要采集和剖析的信息,其规模将发明人类历史之最。“连贯组”(connectome)一词从“基因组”(genome)衍变而来。 20世纪 90 年代,美国能源部与国家卫生研究院(National Institutes of Health,NIH)主持的历经十余年的人类基因组打算(Human Genome Project,HGP)耗资 30 亿美元对人类基因组的 30 亿个 DNA 碱基实现了全测序。这项打算全面获取了人类 DNA 里的编码基因及非编码区的碱基序列信息,大大增强了人类寻找遗传病病因、攻克简单疾病、促成身心健康的能力。2013 年 4 月,美国时任总统奥巴马在国情咨文中声称,人类基因组打算每 1 美元的投入至今已取得了 140 美元的超值回报。因而,美国 2013 年启动了钻研大脑的“脑打算”(BRAIN Initiative),以反对创新型神经科学钻研技术为重心,进而推动对脑科学和脑疾病的钻研。2020 年,美国在脑打算方面取得了一系列丰硕的成绩之后发表启动 2.0 版脑打算。 从 2013 年起,美国、欧洲及日本陆续发表了专攻神经科学的“脑科学打算”。中国科学院在 2012 年已启动了钻研脑联接图谱的策略先导打算。2021 年,通过神经科学专家们的重复研究,中国也启动了“科技翻新 2030:脑科学与类脑钻研重大项目”(以下简称“中国脑打算”)。人类向“最终前沿”进军的队伍中又减少了生力军! 脑科学的重要迷信问题:先天与先天哪个更重要承现峻传授已经在 TED 做过一个十分杰出的科普演讲,介绍大脑连贯组的钻研,收场时他自嘲,大脑如此简单,让人忍不住产生疑难:这难道是咱们穷极毕生能够了解的吗?不错,咱们尽管晓得大脑是基于根本物理与化学原理组成的,却对大脑如何可能精确地区分与贮存海量信息,以及能同时进行思考与抉择等高级认知行为的机制仍知之甚少。在本书中,承现峻传授提出,只有咱们全面地理解了大脑中神经元的连贯,就能够得悉咱们大脑贮存信息的形式、思维模式甚至如何产生高深的思维。事实是否真的如此?让咱们简略讨论一下书中的一些次要迷信观点。 首先,作者认为人的大脑组成不仅仅被基因组决定,更被连贯组决定。这是生物学界一个十分重要的争执——nature vs nurture:到底是先天还是先天的因素决定了人的方方面面,包含大脑的性能等?基因组代表先天因素(nature),从父母遗传而来,很难轻易扭转,而连贯组象征先天因素(nurture),是咱们在这个纷纷杂乱的世界中通过有数外界信息塑造后的大脑。在这个问题上,并非说基因组和连贯组就肯定是“东风和东风谁压倒谁”的问题,而是在何种档次上互相协调、奉献大脑性能的问题。人类大脑的神经网络大都是在出世后,由环境提供的信息塑造而成的。基因提供了神经网络构建所需的资料,而环境是塑造每个人举世无双的神经网络的建筑师。 在成年人的大脑中,尽管神经网络曾经根本定型,然而基因组仍在提供一些资料,使大脑的神经连贯仍有可塑性,能够通过学习,扭转神经连贯的传导、解决信息的效率和部分的突触构造。人类在进行学习与认知流动时,大脑中的电信号就会激活神经元,将许多基因关上或敞开,扭转神经元性能相干蛋白质的程度,使神经元的放电个性和神经元之间的连接点(突触)的传递效率产生长期性的变动。因而从这个角度上讲,连贯组修建在基因组之上,神经网络的架构反映了大脑的智力。作者承现峻还认为,全面理解大脑的神经元连贯组,咱们就能够理解大脑的神秘。依据前文所说,咱们晓得所谓大脑连贯组,其实是个撑持动静脑流动的根本构造,在咱们的大脑接管并解决了外界信息之后,神经元之间的突触可能就会产生扭转,长期的变动就代表了咱们记忆的贮存。电流动再度激活这些突触,就反映了记忆的提取。解析出大脑的网络连接构造,只是了解大脑工作原理的一小步。 进一步来说,活体中的神经网络具备大量的动静信息(电流动),真正解码并了解这些电信息的意义和性能,能力了解大脑的工作原理。所以,假如如承现峻传授所说将大脑深度冷冻,保留连贯组的构造,那么因为咱们不能保留活体时的电流动,没有动静脑流动的信息,所以是否从连贯组的剖析中洞察出神经网络的工作原理,还是未知数。 方兴未艾的脑图谱钻研如果咱们临时还没有方法洞察一个活人大脑中的神经元之间全面的电流动动静信息,那么钻研大脑连贯组还有意义吗?近年来,神经科学家意识到,咱们的低等认知性能及脑疾病的起因往往与大脑中神经元具备性能的神经连贯的异样无关。 ...

September 28, 2022 · 1 min · jiezi

关于神经网络:如何估算transformer模型的显存大小

在微调GPT/BERT模型时,会常常遇到“ cuda out of memory”的状况。这是因为transformer是内存密集型的模型,并且内存要求也随序列长度而减少。所以如果能对模型的内存要求进行粗略的预计将有助于预计工作所需的资源。 如果你想间接看后果,能够跳到本文最初。不过在浏览本文前请记住所有神经网络都是通过反向流传的办法进行训练的, 这一点对于咱们计算内存的占用非常重要。 total_memory = memory_modal + memory_activations + memory_gradients这里的memory_modal是指存储模型所有参数所需的内存。memory_activations是计算并存储在正向流传中的两头变量,在计算梯度时须要应用这些变量。因为模型中梯度的数量通常等于两头变量的数量,所以memory_activations= memory_gradients。因而能够写成: total_memory = memory_modal + 2 * memory_activations所以咱们计算总体内存的要求时只须要找到memory_modal和memory_activations就能够了。 估算模型的内存上面咱们以GPT为例。GPT由许多transformer块组成(前面我用n_tr_blocks示意其数量)。每个transformer块都蕴含以下构造: multi_headed_attention --> layer_normalization --> MLP -->layer_normalization每个multi_headed_attention元素都由键,值和查问组成。其中包含n_head个注意力头和dim个维度。MLP是蕴含有n_head * dim的尺寸。这些权重都是要占用内存的,那么 memory_modal = memory of multi_headed_attention + memory of MLP = memory of value + memory of key + memory of query + memory of MLP = square_of(n_head * dim) + square_of(n_head * dim) + square_of(n_head * dim) + square_of(n_head * dim) = 4*square_of(n_head * dim)因为咱们的模型蕴含了n个单元。所以最初内存就变为: ...

August 30, 2022 · 2 min · jiezi

关于神经网络:数据算力强支撑佳格天地联合华为云打造农业农村大数据解决方案

日前,华为云“828 B2B企业节”隆重开启。农业农村大数据利用企业佳格天地联结华为云推出“测亩宝”、“高绘”、“耘境知天农业大数据平台”、“农业金融风险监管平台”等多款产品。通过佳格天地以卫星遥感为外围的多源海量数据,联合华为云弱小算力反对,为农业生产经营、农业金融风险治理等业务场景提供全产业链大数据解决方案。以农业金融风险治理为例,源源不断的金融活水是激活农村振兴倒退的重要能源。佳格天地瞄准农业农村金融业务发展过程中数据缺失、信用体系不健全、资产状况不通明等问题,以“合规增效”为切入点,建设“农业金融风险监管平台”。(华为云商城链接:marketplace.huaweicloud.com/contents/52… B2B企业节”。▼佳格天地“农业金融风险监管平台”平台联合佳格天地卫星遥感数据处理剖析能力,及华为云ModelArts弱小的图片分类、物体辨认和面向结构化数据的剖析研判能力,打造了天空地一体化的农贷风控新模式,可能助力银行等相干机构建设多维度的还款能力评估体系和风控模型,实现贷中、贷前、贷后全流程风控,以及人、地、物、时、事“五位一体”的全方位风控,晋升普惠金融服务能力,切实施展金融在农村振兴倒退过程中的“助推器”作用。面向宽广农户,“农业金融风险监管平台”将农户种植的土地与作物转化为可掂量的数字化资产,从而助力解决农户因不足资产数据而难以申请贷款的问题。同时,平台配套手机端利用,农户通过手机即可实现贷款地块勾画、填写根本信息,实现线上申请贷款。▼通过手机APP实现在线勾画地块面向金融机构,“农业金融风险监管平台”反对追溯历史卫星遥感和气象数据,帮忙金融机构理解农户的种植生产稳定性、实在历史种植规模、历史产量以及生产危险信息,将相干后果输入给金融机构,为授信额度提供数据撑持。贷后,平台会继续对贷款地块的作物长势、气象状况进行监测,造成种植危险地图,通过抵押物价值的变动进一步评估还款能力。▼基于数据对贷前准入与授信额度进行测定面向政府部门,“农业金融风险监管平台”可能充沛盘活政府已有的各项涉农数据,将数据切实利用于金融业务之中。同时增强政府对金融支农业务发展状况的监管力度,助力政府推动落实各项金融支农政策。以后,佳格天地“农业金融风险监管平台”已为多家大型国有银行提供服务,将大数据与金融工具联合,为农业信贷业务中的各方主体、各个环节提供无力数据撑持。将来,佳格天地将进一步与华为云严密单干,推动数据、算法、算力与利用深度交融,继续推动大数据在农业农村倒退建设中的落地利用,赋能各业务场景,为农业农村倒退注入强劲数字能源。想理解更多华为云产品相干信息,请分割咱们,电话:950808按0转1

August 29, 2022 · 1 min · jiezi

关于神经网络:深度学习之神经网络CNNRNNGAN算法原理实战

download:深度学习之神经网络(CNN/RNN/GAN)算法原理+实战Golang | 模块引入与疾速实现表格的读写业务介绍在很多管理系统下都有不少让后端进行表格进行操作的业务需要,本期就带大家了解一下Golang中如何使用模块引入的,以及讲解怎么疾速的使用excelize库,对表格进行读写创建的。注释配置模块引入环境咱们在期望在vscode终端中也可能使用模块引入,它是 Go 1.11后新版模块治理形式。go env -w GO111MODULE=auto复制代码其 GO111MODULE 可能传送: auto:在其外层且根目录里有 go.mod 文件时,则开启模块反对,否者无模块反对。 on:开启模块反对。 off:无模块反对。 而后,初始化这个我的项目,就会生成一个 go.mod 文件。go mod init excel-demo复制代码 go.mod 是Go 1.11版本引入的官网的包管理工具(之前为 gopath 来治理),它可能理解为前端开发中的 npm 的作用,次要是为理解决没有记录依赖包具体版本查阅艰巨的问题,也极大程度上便利了依赖包的治理。 引入excelize库excelize 是一个用于读写 Microsoft Excel™2007 及更高版本生成的电子表格文档(XLAM / XLSM / XLSX / XLTM / XLTX)的 Go 语言库,而且更新保护频繁且非常好用。引入excelizego get github.com/xuri/excelize/v2复制代码这里因为站点是国外的所以常常会因无法访问而超时。此时,不要慌,咱们换一个国内的代理就好了。go env -w GOPROXY=https://goproxy.cn复制代码创建表格package main import ( "fmt""github.com/xuri/excelize/v2") func createExcel(){ // 创建表格文件f := excelize.NewFile()// 在Sheet1设置A1项的值f.SetCellValue("Sheet1", "A1", "这是Sheet1的A1项")// 创建新的Sheet,命名为Sheet2selectIndex := f.NewSheet("Sheet2")// 在Sheet2设置B2项的值f.SetCellValue("Sheet2", "B2", "这是Sheet2的B2项")// 切换到Sheet2f.SetActiveSheet(selectIndex)// 保存文件if err := f.SaveAs("test.xlsx"); err != nil { fmt.Println(err)}} ...

July 23, 2022 · 2 min · jiezi

关于神经网络:DWSiam更宽更深的孪生网络

原文链接 论文地址:https://arxiv.org/pdf/1901.01... 摘要目前在孪生网络追踪器中应用的骨干网络绝对较浅,例AlexNet。本文钻研如何利用更深和更广的卷积神经网络来加强跟踪的鲁棒性和准确性。应用改良后的网络间接替换,例如ResNet和Inception,并没有带来改良。次要起因是 1)神经元感触野的大幅减少导致特色可辨性和定位精度升高; 2)卷积的网络 padding 在学习中引起地位偏差。 为了解决这些问题,咱们提出了新的残差模块,以打消padding的负面影响,并进一步设计应用这些模块的新架构,具备受控的感触野大小和步长。设计的架构利用于SiamFC+和SiamRPN时保障了实时跟踪速度。试验表明,仅仅因为所提出的网络架构,咱们的 SiamFC+和 SiamRPN+别离在OTB-15,VOT-16和VOT-17数据集上,绝对于原始版本取得了高达9.8%/ 5.7%(AUC),23.3%/ 8.8%(EAO)和 24.4%/ 25.0%(EAO)的绝对改良。 1.介绍1.1 相干钻研RPN具体介绍:https://mp.weixin.qq.com/s/VX... SiamFC具体介绍:https://mp.weixin.qq.com/s/kS... SiamRPN具体介绍:https://mp.weixin.qq.com/s/pm... 1.2 本文介绍咱们用更深更广的网络取代VGG,Inception和ResNet等网络的浅层主干网。但这种简略的替换并没有带来太大的改良,甚至可能在网络深度或宽度减少时导致性能大幅降落,如图1所示。 图1:胜利图的AUC与网络深度和宽度。宽度width是指模块中分支的数量。通过对 OTB-13 的评估,应用具备不同骨干网络的 SiamFC取得了这个后果。 剖析了Siamese网络架构,确定神经元的感触野大小、卷积步长、padding是影响跟踪精度的三个重要因素。感触野确定用于计算特色的图像区域。较大的感触野提供更大的图像上下文,而较小的感触野可能无奈捕获指标对象的构造。stride影响定位精度,同时管制输入特色图的大小。padding在模型训练中引起潜在的地位偏差。 在本文中,咱们通过设计新的残差模块和网络架构来解决这些问题。首先,咱们提出了一组基于“瓶颈(bottleneck)”的残差块的外部裁剪(cropping-inside residual,CIR)单元。CIR单元在块外部裁剪出受填充 padding 影响的特色(即接管填充信号的特色),从而避免卷积滤波器学习地位偏差。其次,咱们通过重叠 CIR单元设计了两种网络架构,即更深和更宽的网络。为了进步定位精度,咱们设计了特定的步幅和感触野。 2. 性能进化剖析性能降落能够间接归因于网络结构,是图1试验中惟一扭转的设置。因而,咱们首先确定这些网络架构之间的构造差别。如表格2所示,除了深度和宽度之外,网络中还有其余几个不同的外部网络因素,包含步幅(STR),填充(PAD),最初一层神经元的感触野(RF)和输入特色尺寸(OFS)。 咱们批改了 AlexNet,VGG,Inception 和 ResNet 的构造,并揭示了外部因素的影响。如表格1所示,Siamese更喜爱中级特色(步幅4或8),这些特色在物体定位方面比高级特色更准确(步幅≥16)。对于感触野(RF),最佳感触野大小笼罩输出样本图像z的约60%~80%。对于输入特色尺寸,察看到小尺寸(OFS≤3)不利于跟踪精度。 表1:AlexNet,VGG 10,Inception -22和ResNet-33上的网络外部因素剖析。数字①- ⑩代表不同的版本,其中批改卷积内核大小,下采样层和填充以显示趋势。因为空间无限,补充资料中给出了无关批改的详细信息。 1.为了更好地显示趋势,咱们将±0示意为网络的原始RF大小。+和-示意绝对于原来的增大和减小尺寸。Max(127)示意最大无效RF,其与示例图像的大小雷同,即127x127像素。 2.对于Inception网络,其RF大小位于一个范畴内。这里咱们只列出实践上的最大尺寸,与ResNet对齐进行比拟。 表2:不同网络的外部因素:最初一层网络中的神经元的感触野(RF),步幅(STR),输入特色尺寸(OFS),填充(PAD)和宽度(W)。因为Inception在一个块中蕴含多个分支,因而其 RF位于一个范畴内。 Siamese 框架将核心裁剪的图像对作为训练数据传入,其中指标对象始终存在于图像核心。如果输入单元的感触野延长超出图像边界(受padding影响),网络模型学习地位产生偏差。图2给出了测试阶段中这种学习偏差的可视化示例。它显示当指标对象挪动到图像边界时,其峰值不能准确批示指标的地位。这是由跟踪器漂移引起的常见状况。 图2:模型中学习的地位偏差的可视化 3. 方针1.将步幅设定为4或8。 2.最佳感触野大小笼罩输出样本图像 z的约 60%~80% 3.在设计网络架构时,应将stride,感触野和输入特色尺寸视为一个整体。这三个因素并不是彼此独立的。如果一个扭转,其他人将相应扭转。将它们联合在一起能够帮忙设计的网络在Siamese框架中提取更多的有判断力的特色。 4.对于全卷积的Siamese网络,删除padding操作重要。padding引起的地位偏差会升高孪生跟踪器的准确性和鲁棒性。 4. 外部裁剪残差(CIR)单元残差单元(residual unit)是网络架构设计中的要害模块。它由3个重叠的卷积层和绕过它们的快捷连贯(shortcut connection)组成,如图3(a)所示。这三层是1×1,3×3和1×1个卷积,其中1×1层负责缩小或复原尺寸,使3×3层成为具备较小输出和输入尺寸的瓶颈(bottleneck)。此瓶颈卷积包含大小为1的zero-padding,以确保在增加之前兼容的输入大小。 图3:拟议的外部残余单位。(a)和(b)是残差单元和下采样单元(down sampling unit),而(a‘)和(b’)是咱们提出的单位。(c)和(d)是倡议的宽残差单元。灰色箭头示意便于信息流传的shortcut paths,而蓝色方框则突出显示与原始单位的差别。字母'p'和's'别离示意padding大小和步长。 CIR单元。如第3节所述,padding可能会在Siamese框架中引入地位偏差。为此咱们减少残差单位进行裁剪操作,如图 3(a’)所示。裁剪操作会删除计算受zero-padding信号影响的特色,打消了残差单元中的padding影响特色。 ...

July 22, 2022 · 1 min · jiezi

关于神经网络:使用Python和OCR进行文档解析的完整代码演示

在本文中将应用Python演示如何解析文档(如pdf)并提取文本,图形,表格等信息。 文档解析波及查看文档中的数据并提取有用的信息。它能够通过自动化缩小了大量的手工工作。一种风行的解析策略是将文档转换为图像并应用计算机视觉进行辨认。而文档图像剖析(Document Image Analysis)是指从文档的图像的像素数据中获取信息的技术,在某些状况下,预期后果应该是什么样的没有明确的答案(文本、图像、图表、数字、表格、公式……)。 OCR (Optical Character Recognition,光学字符识别)是通过计算机视觉对图像中的文本进行检测和提取的过程。它是在第一次世界大战期间创造的,过后以色列科学家伊曼纽尔·戈德堡(Emanuel Goldberg)创造了一台能读取字符并将其转换为电报代码的机器。到了当初该畛域曾经达到了一个非常复杂的程度,混合图像处理、文本定位、字符宰割和字符识别。基本上是一种针对文本的对象检测技术。 在本文中我将展现如何应用OCR进行文档解析。我将展现一些有用的Python代码,这些代码能够很容易地用于其余相似的状况(只需复制、粘贴、运行),并提供残缺的源代码下载。 这里将以一家上市公司的PDF格局的财务报表为例(链接如下)。 https://s2.q4cdn.com/47000403...(As-Filed).pdf 检测和提取该PDF中的 文本、图形和表格 环境设置文档解析令人烦恼的局部是,有太多的工具用于不同类型的数据(文本、图形、表格),但没有一个可能完满地工作。上面是一些最风行办法和软件包: 以文本形式解决文档:用PyPDF2提取文本,用Camelot或TabulaPy提取表,用PyMuPDF提取图形。将文档转换为图像(OCR):应用pdf2image进行转换,应用PyTesseract以及许多其余的库提取数据,或者只应用LayoutParser。兴许你会问:“为什么不间接解决PDF文件,而要把页面转换成图像呢?”你能够这么做。这种策略的次要毛病是编码问题:文档能够采纳多种编码(即UTF-8、ASCII、Unicode),因而转换为文本可能会导致数据失落。因而为了防止产生该问题,我将应用OCR,并用pdf2image将页面转换为图像,须要留神的是PDF渲染库Poppler是必须的。 # with pippip install python-poppler# with condaconda install -c conda-forge poppler你能够很容易地读取文件: # READ AS IMAGEimport pdf2imagedoc = pdf2image.convert_from_path("doc_apple.pdf")len(doc) #<-- check num pagesdoc[0] #<-- visualize a page 跟咱们的截图截然不同,如果想将页面图像保留在本地,能够应用以下代码: # Save imgsimport osfolder = "doc"if folder not in os.listdir(): os.makedirs(folder)p = 1for page in doc: image_name = "page_"+str(p)+".jpg" page.save(os.path.join(folder, image_name), "JPEG") p = p+1最初,咱们须要设置将要应用的CV引擎。LayoutParser仿佛是第一个基于深度学习的OCR通用包。它应用了两个驰名的模型来实现工作: ...

July 19, 2022 · 2 min · jiezi

关于神经网络:MoViNets系列模型手机端实时分类视频的好帮手

须要视频了解,然而嫌模型太重、耗时太久?轻量动作辨认模型再次降级,由谷歌研究院在2021年提出的 MoViNets 系列可能更加高效地在现推理流媒体视频,并反对施行分类挪动设施端捕捉的视频流。MoViNets 在视频动作辨认的通用数据集 Kinetics、Moments in Tme 和 Charades 上均取得了先进的精度和效率,证实了其高效性和宽泛适用性。 |MoViNets: Streaming Evaluation vs. Multi-Clip EvaluationMoViNets 是一个卷积神经网络系列,对 2D 视频分类器和 3D 视频分类器舍短取长,兼容它们的要害劣势,并加重各自的局限性。该系列模型通过神经构造搜寻取得丰盛的高效视频网络结构,援用流缓冲技术使得3D卷积可能承受任意长度的流视频序列,再简略地集成多个模型用于进步精度,最终无效地均衡计算量、内存开销、精度。 相干材料:模型用例:action-classification/movinet论文:MoViNets: Mobile Video Networks for Efficient Video Recognition更多材料:MoViNets:让实时视频了解成为事实 更多我的项目更新及具体内容请关注咱们的我的项目( https://github.com/towhee-io/...) ,您的关注是咱们用爱发电的弱小能源,欢送 star, fork, slack 三连 :)

July 19, 2022 · 1 min · jiezi

关于神经网络:MindSpore报错-taskfailinfo-or-currentgraph-is-nullptr

1 报错形容1.1 零碎环境Hardware Environment(Ascend/GPU/CPU): AscendSoftware Environment:– MindSpore version (source or binary): 1.8.0– Python version (e.g., Python 3.7.5): 3.7.6– OS platform and distribution (e.g., Linux Ubuntu 16.04): Ubuntu 4.15.0-74-generic– GCC/Compiler version (if compiled from source):1.2 根本信息1.2.1 脚本训练脚本是通过构建CTCGreedyDecoder的单算子网络,对输出中给出的 logits 执行贪心解码(最佳门路)。脚本如下: 01 class Net(nn.Cell): 02 def __init__(self): 03 super(Net, self).__init__() 04 self.ctc_greedyDecoder = ops.CTCGreedyDecoder() 05 06 def construct(self, input_x, sequence_length): 07 return self.ctc_greedyDecoder(input_x, sequence_length) 08 net = Net() 09 10 11 inputs = Tensor(np.array([[[0.6, 0.4, 0.2], [0.8, 0.6, 0.3]], 12 [[0.0, 0.6, 0.0], [0.5, 0.4, 0.5]]]), mindspore.float32) 13 sequence_length = Tensor(np.array([4, 2]), mindspore.int32) 14 15 decoded_indices, decoded_values, decoded_shape, log_probability = net(inputs, sequence_length) 16 print(decoded_indices, decoded_values, decoded_shape, log_probability)1.2.2 报错这里报错信息如下:[ERROR] DEVICE(172230,fffeae7fc160,python):2022-06-28-07:02:12.636.101 [mindspore/ccsrc/plugin/device/ascend/hal/device/ascend_kernel_runtime.cc:603] TaskFailCallback] Execute TaskFailCallback failed. task_fail_info or current_graph_ is nullptrTraceback (most recent call last): File "CTCGreedyDecoder.py", line 26, in <module> ...

July 17, 2022 · 2 min · jiezi

关于神经网络:MindSpore报错ValueErrorpaddingidx-in-Embedding超出范围的报错

1 报错形容1.1 零碎环境Hardware Environment(Ascend/GPU/CPU): AscendSoftware Environment:– MindSpore version (source or binary): 1.8.0– Python version (e.g., Python 3.7.5): 3.7.6– OS platform and distribution (e.g., Linux Ubuntu 16.04): Ubuntu 4.15.0-74-generic– GCC/Compiler version (if compiled from source):1.2 根本信息1.2.1 脚本训练脚本是通过构建Embedding的单算子网络,实现嵌入层操作。脚本如下: 01 class Net(nn.Cell): 02 def __init__(self, vocab_size, embedding_size, use_one_hot, padding_idx=None): 03 super(Net, self).__init__() 04 self.op = nn.Embedding(vocab_size=vocab_size, embedding_size=embedding_size, use_one_hot=use_one_hot, padding_idx=padding_idx) 05 06 def construct(self, x): 07 output = self.op(x) 08 return output 09 10 input = Tensor(np.ones([8, 128]), mindspore.int32) 11 vocab_size = 2000 12 embedding_size = 768 13 use_one_hot = True 14 example = Net(vocab_size=vocab_size, embedding_size=embedding_size, use_one_hot=use_one_hot, padding_idx=10000) 15 output = example(input) 16 print("Output:", output.shape)1.2.2 报错这里报错信息如下:Traceback (most recent call last): File "C:/Users/l30026544/PycharmProjects/q2_map/new/I3MRK3.py", line 26, in <module> ...

July 15, 2022 · 2 min · jiezi

关于神经网络:MindSpore报错-halfpixelcentersTrue-only-support-in-Ascend

1 报错形容1.1 零碎环境Hardware Environment(Ascend/GPU/CPU): CPUSoftware Environment:– MindSpore version (source or binary): 1.8.0– Python version (e.g., Python 3.7.5): 3.7.6– OS platform and distribution (e.g., Linux Ubuntu 16.04): Ubuntu 4.15.0-74-generic– GCC/Compiler version (if compiled from source):1.2 根本信息1.2.1 脚本调用ResizeBilinear算子,用双线性插值调整输出Tensor为指定的大小。脚本如下: 01 context.set_context(device_target='CPU') 02 x = Tensor([[[[1, 2, 3, 4, 5], [1, 2, 3, 4, 5]]]], mindspore.float32) 03 resize_bilinear = ops.ResizeBilinear((5, 5), half_pixel_centers=True) 04 output = resize_bilinear(x) 05 print(output)1.2.2 报错这里报错信息如下:Traceback (most recent call last): File "C:/Users/l30026544/PycharmProjects/q2_map/new/ResizeBilinear.py", line 7, in <module> ...

July 15, 2022 · 1 min · jiezi

关于神经网络:MindSpore数据集加载GeneratorDataset功能及常见问题

MindSpore反对用户通过自定义的形式结构输出的数据源,而后接入到MindData的流解决流程中,通过迭代该数据源获取数据集进行训练,有点相似PyTorch的DataLoader。相干的API能够参考:mindspore.dataset.GeneratorDataset本文次要介绍GeneratorDataset的罕用性能,用户常见的问题及解决办法。###############################################GeneratorDataset自定义数据集次要能够分为3类:可随机拜访的自定义数据集生成器(python generator)式自定义数据集可迭代式的自定义数据集###############################################结构可随机拜访的数据集先看一个例子import numpy as npimport mindspore.dataset as ds class DatasetGenerator: def __init__(self): self.data = [np.array([i]) for i in range(10)]def __getitem__(self, item): return self.data[item]def __len__(self): return 10dataset = ds.GeneratorDataset(DatasetGenerator(), ["col1"])for data in dataset.create_dict_iterator(output_numpy=True, num_epochs=1): print(data["col1"])可随机拜访,意为数据集自身每一条数据都能够通过索引间接拜访。因而结构的数据源自身是持有全量数据集的,如上述DatasetGenerator在__init__办法中自定义了。常见问题1错误代码:class DatasetGenerator: def __init__(self): self.data = [np.array([i]) for i in range(10)]def __getitem__(self, item): return self.data[item]谬误提醒:RuntimeError: Attempt to construct a random access dataset, '__len__' method is required!谬误剖析/修改办法:谬误提醒短少__len__办法,为什么须要这个办法呢?如上述所示,这是一个可随机拜访的数据集,因而能够通过随机的索引拜访任意数据,所以须要一个索引的范畴来确定随机的范畴,因而__len__办法是必须的。所以须要为DatasetGenerator加上此办法。常见问题2错误代码:class DatasetGenerator: def __init__(self): self.data = [np.array([i]) for i in range(10)]def __getitem__(self, item): self.data["data"] return self.data[item]def __len__(self): return 10谬误提醒/修改办法:RuntimeError: Exception thrown from PyFunc. TypeError: list indices must be integers or slices, not str谬误剖析:谬误提醒执行PyFunc的时候出错了(Exception thrown from PyFunc)。个别遇到这种谬误,是因为呈现了Python语法错误,MindSpore同时会在这句Error后附上抛出的Python异样,比方这里就是TypeError: list indices must be integers or slices, not str。遇到这种状况,第一工夫先查看自定义的逻辑是否呈现了语法错误,比方查看DatasetGenerator的__getitem__办法,发现对list的拜访用了str下标,导致了一个python的异样。一般来说,能够间接定义这个类DatasetGenerator,独自调一下各个办法看是否呈现了问题,疾速排查。常见问题3错误代码:class DatasetGenerator: def __init__(self): ...

July 15, 2022 · 2 min · jiezi

关于神经网络:MindSpore易点通精讲系列数据集加载之ImageFolderDataset

Dive Into MindSpore – ImageFolderDataset For Dataset LoadMindSpore精讲系列–数据集加载之ImageFolderDataset本文开发环境Ubuntu 20.04Python 3.8MindSpore 1.7.0本文内容摘要先看API简略示例深刻探索本文总结遇到问题本文参考1. 先看API上面对主要参数做简略介绍:dataset_dir – 数据集目录num_samples – 读取的样本数,通常选用默认值即可num_paraller_workers – 读取数据采纳的线程数,个别为CPU线程数的1/4到1/2shuffle – 是否打乱数据集,还是按程序读取,默认为None。这里肯定要留神,默认None并非是不打乱数据集,这个参数的默认值有点让人困惑。extensions – 图片文件扩展名,能够为多个即list。如[“.JPEG”, “.png”],则读取文件夹相应扩展名的图片文件。if empty, read everything under the dir.class_indexing – 文件夹名到label的索引映射字典decode – 是否对图片数据进行解码,默认为False,即不解码num_shards – 分布式场景下应用,能够认为是GPU或NPU的卡数shard_id – 同下面参数在分布式场景下配合应用,能够认为是GPU或NPU卡的ID2. 简略示例本文应用的是Fruits 360数据集Kaggle 下载地址启智平台 下载地址) – 对于无法访问kaggle的读者,能够采纳启智平台。2.1 解压数据将Fruits 360数据集下载后,会失去archive.zip文件,应用unzip -x archive.zip命令进行解压。在同级目录下失去两个文件夹fruits-360_dataset和fruits-360-original-size。应用命令tree -d -L 3 .对数据状况进行简略查看,输入内容如下:.├── fruits-360_dataset│ └── fruits-360│ ├── Lemon│ ├── papers│ ├── Test│ ├── test-multiple_fruits│ └── Training└── fruits-360-original-size └── fruits-360-original-size ├── Meta ├── Papers ├── Test ├── Training └── Validation本文将应用fruits-360_dataset文件夹。2.2 最简用法上面对fruits-360_dataset文件夹下的训练集fruits-360/Training进行加载。代码如下:参考1中参数介绍,须要将shuffle参数显示设置为False,否则无奈复现。from mindspore.dataset import ImageFolderDataset ...

July 15, 2022 · 7 min · jiezi

关于神经网络:MindSpore易点通精讲系列数据集加载之CSVDataset

Dive Into MindSpore – CSVDataset For Dataset LoadMindSpore精讲系列 – 数据集加载之CSVDataset本文开发环境Ubuntu 20.04Python 3.8MindSpore 1.7.0本文内容摘要先看API数据筹备两种试错正确示例本文总结问题改良本文参考1. 先看API老传统,先看看官网文档:参数解读:dataset_files – 数据集文件门路,能够单文件也能够是文件列表filed_delim – 字段宰割符,默认为","column_defaults – 一个巨坑的参数,留待前面解读column_names – 字段名,用于后续数据字段的keynum_paraller_workers – 不再解释shuffle – 是否打乱数据,三种抉择[False, Shuffle.GLOBAL, Shuffle.FILES]Shuffle.GLOBAL – 混洗文件和文件中的数据,默认Shuffle.FILES – 仅混洗文件num_shards – 不再解释shard_id – 不再解释cache – 不再解释2. 数据筹备2.1 数据下载阐明:数据下载地址:UCI Machine Learning Repository: Iris Data Set应用如下命令下载数据iris.data和iris.names到目标目录:mkdir iris && cd iriswget -c https://archive.ics.uci.edu/m...wget -c https://archive.ics.uci.edu/m...备注:如果受零碎限度,无奈应用wget命令,能够思考用浏览器下载,下载地址见阐明。2.2 数据简介Iris也称鸢尾花卉数据集,是一类多重变量剖析的数据集。数据集蕴含150个数据集,分为3类,每类50个数据,每个数据蕴含4个属性。可通过花萼长度,花萼宽度,花瓣长度,花瓣宽度4个属性预测鸢尾花卉属于(Setosa,Versicolour,Virginica)三个品种中的哪一类。更具体的介绍参见官网阐明:5. Number of Instances: 150 (50 in each of three classes) Number of Attributes: 4 numeric, predictive attributes and the classAttribute Information: ...

July 15, 2022 · 5 min · jiezi

关于神经网络:opsROIAlgin算子出现nan的问题解决

在网络内应用算子ops.ROIAlign时,呈现nan的问题,次要是输入的box大小小于指定的尺寸时呈现。(应用dump算子将该算子的输入输出都保留下来,独自运行该算子不会报错) 解决办法: 将该算子的默认参数都补上去,例如如下: 此时再运行,nan的问题不复见。

June 28, 2022 · 1 min · jiezi

关于神经网络:易用性SIGMindSpore漫游世界

June 28, 2022 · 0 min · jiezi

关于神经网络:系列教程-用Jina搭建PDF搜索引擎Part-1

 PDF Search 系列教程来咯,在 Part 1 中,咱们将演示如何从 PDF 中提取、解决并存储图像及文本。随着神经搜寻 (Neural Search) 技术的遍及,越来越多开发者,开始尝试用 Jina 解决非结构化数据的索引和搜寻问题。本系列教程中,咱们将演示 如何用 Jina 搭建一个PDF 搜索引擎。 具体内容如下: Part 1 将介绍如何从 PDF 中提取、解决并存储图像及文本Part 2 将演示如何将这些信息输出到 CLIP 中(CLIP 是一个能够了解图像及文本的深度学习模型)。提取 PDF 图像及文本信息后,CLIP 将生成索引,输出图像或文本,即可进行语义相似性搜寻。Part 3 通过客户端及 Streamlit 前端,对索引进行搜寻。Part 4 为其余相干演示,如提取元数据等。前序简介:预期指标 & 技术栈预期指标: 搭建一个 PDF 搜索引擎,用户输出文本或上传图片,搜索引擎即可返回相似的图片和文本片段,并附带原始 PDF 链接。 本文将着重解说如何将一个 900 多页的 PDF 解决成可供搜寻的向量。 本教程将波及以下技术栈: DocArray:a data structure for unstructured data. 通过这个工具能够封装 PDF 文件、文本块、图像块以及搜索引擎的其余输出/输入。 Jina:为 DocArray Document 搭建流水线及神经搜索引擎,并将其扩大到云端。 Jina Hub:无需逐个创立处理单元,可间接应用云端可复用模块。 教程详解:提取 PDF 中的文本及图像提取 PDF 中的文本及图像,有以下办法可供选择: ...

May 26, 2022 · 3 min · jiezi

关于神经网络:线上分享-以淘立拍为例深度学习下的搜索召回技术

关上淘宝,对准目标物品扫一扫,即可疾速搜寻查找相似商品;对准题目拍照搜寻,片刻就能搜到解题思路;播放歌曲片段,听歌识曲 APP 十几秒就能辨认出对应歌曲…… 这些咱们看起来稀松平时的场景,背地都离不开搜寻召回技术的理论利用。 本期线上分享,来自 Jina AI 的高级工程师王峰,将率领大家对于深度学习下的搜寻召回技术一探到底。 01 分享主题深度学习下的搜寻召回技术 02 流动工夫2022 年 5 月 19 日 18:00-19:00 03 演讲嘉宾王峰 Jina AI 高级 AI 工程师 开源神经搜寻框架 Jina 的外围贡献者,热衷于开源软件和云原生技术。毕业于山东大学,在香港浸会大学取得计算机博士学位。 曾就任于腾讯科技和虎牙科技,专一机器学习与深度学习算法在自然语言了解、多模态表征学习和信息检索畛域的理论利用。 04 分享内容概览1 畛域预训练和比照学习 2 向量检索模型的挑战与解决方案 3 应用 Jina 疾速搭建「淘立拍」 05 参加本直播,你将播种1 理解深度学习如何利用于解决搜寻召回问题 2 理解目前支流及最新的搜寻召回算法的基本原理 3 理解深度搜寻召回技术的瓶颈和将来倒退方向 4 学习搭建一个基于深度学习的搜寻零碎

May 18, 2022 · 1 min · jiezi

关于神经网络:Python-TensorFlow循环神经网络RNNLSTM神经网络预测股票市场价格时间序列和MSE评估准确性

原文链接:http://tecdat.cn/?p=26562该我的项目包含: 自 2000 年 1 月以来的股票价格数据。咱们应用的是 Microsoft 股票。将工夫序列数据转换为分类问题。应用 TensorFlow 的 LSTM 模型由 MSE 掂量的预测准确性GPU 设置(如果可用)  gpus = tf.config.experimental.li读取数据集有几种办法能够获取股市数据。以下数据集是应用 R BatchGetSymbols 生成的。 #加载数据集# ref.date是数组的第一列 datang = read_csv('stopriceo.csv', header=0) pd.pivot_table(datong) 咱们的股票工夫序列咱们为这个项目选择了微软(股票代码 MSFT)。 plt.rrms\['fgre.dpi'\] = 300plt.plot(dfte\['MSFT'\]) 工夫序列显然不是安稳的,这是大多数预测模型所假如的属性。咱们能够对工夫序列利用变换,直到它达到安稳状态。Dickey-Fuller 测验使咱们可能确定咱们的工夫序列是否具备季节性。 在这里,咱们将利用对数转换来解决股票市场的指数行为。 其余有助于预测模型的转换: 挪动平均线差分化df1 = datt\['MSFT'\]# 咱们对数据集进行了对数转换df1 = np.log(df1) # 代替计划:咱们能够对工夫序列进行差分,从而去除季节性和平均值的变动。# 创立一个差分序列#dfdiff = diffe(df1,1)预处理在这里,咱们对工夫序列数据利用规范预处理。 在工夫序列中,咱们没有标签,但咱们有工夫序列的将来值,因而输入能够是 x(t),给定 x(t-1) 作为输出。这是将数据集构建为监督问题的一种实用(且直观)的办法。 scaer = ixSer(fatue_ange = (0,1))scer.i_rrm(np.array(df1).rehape(-1,1)) LSTM 模型咱们在这里实现了一个重叠的 LSTM 模型。 LSTM 网络是一种递归神经网络,可能学习序列预测问题中的序列依赖性。LSTM 模型次要用于语音辨认、自然语言解决的上下文中。最近,它们也被利用于工夫序列数据的剖析。 from tensorflow.keras.models import Sequential model.add(LSTM(50, retsueces = True#stacked LSTMmodel.add(Dropout(0.1)) history plt.plot(history.history 体现import math from sklearn.metrics import mean\_squared\_error plt.rcParams\['figure.dpi'\] = 300plt.rcParams\['savefig.dpi'\] = 300#移位预测lokback = ie_steptrinPrectPot = numpy.empty_like(df1)traireditPlot\[:,:\] = np.nanin_y = scaler.nesetsfrm(df1)plt.plot plt.plot(iv_y) 将来 30 天的预测咱们当初能够递归地利用该模型,通过预计第二天的 (t+1) 价格,而后再次将其作为输出来推断 t+2 天的价格,依此类推。这个预测当然会有更大的误差,因为每个预测的日子都会带来很大的不确定性。然而,这个预测的确会通知咱们模型是否从过来的数据中学到了任何货色。 # 预测将来30天的状况 len(tesdata) # 1211# 我认为在test_data中,最初一天是5月22日,例如# 对于5月23日,我须要100个前一天的数据 x\_input = test\_data\[(len while(i<ftue_teps):    if(len(tep\_put)>ie\_sep):        x_input = np.array(tepinut\[1:\])        x\_input = x\_input.reshap plt.plot(dy\_ew, scaler.inverse\_transf plt.plot(df3\[1000:\]) 最受欢迎的见解 1.用于NLP的Python:应用Keras的多标签文本LSTM神经网络分类 2.Python中利用长短期记忆模型LSTM进行工夫序列预测剖析 – 预测电力耗费数据 3.python在Keras中应用LSTM解决序列问题 4.Python中用PyTorch机器学习分类预测银行客户散失模型 ...

May 7, 2022 · 1 min · jiezi

关于神经网络:Multimodal-Multitask-Masked-Autoencoder一种简单灵活且有效的-ViT-预训练策略

MAE是一种应用自监督预训练策略的ViT,通过遮蔽输出图像中的补丁,而后预测缺失区域进行子监督的与训练。只管该办法既简略又无效,但 MAE 预训练指标目前仅限于繁多模态——RGB 图像——限度了在通常出现多模态信息的理论场景中的利用和性能。 在新论文 MultiMAE: Multi-modal Multi-task Masked Autoencoders 中,来自瑞士洛桑联邦理工学院 (EPFL) 的团队提出了 Multi-modal Multi-task Masked Autoencoders (MultiMAE),也是一种预训练策略,能够对掩码进行自动编码解决并执行多模态和多任务的训练。MultiMAE 应用伪标签进行训练,使该框架实用于任何 RGB 数据集。 MultiMAE 的设计基于传统的 Masked Autoencoding,但在两个要害方面有所不同: 1、除了 RGB 图像,它还能够抉择承受输出中的附加模态信息(因而是“多模态”) 2、其训练指标相应地包含 预测除 RGB 图像之外的多个输入(因而称为“多任务”)。 从架构上看,MultiMAE 的编码器是一个 ViT,但每个额定的输出模态都有补丁的投影层和一个带有可学习的额定全局令牌嵌入,相似于 ViT 的类令牌。所以仅加载所需的输出投影并疏忽所有其余投影的MultiMAE 预训练权重能够间接用于规范单模态 ViT。 为了执行语义宰割补丁投影,论文的作者用学习的 64 维的类嵌入替换每个类索引。并且仅对可见标记的随机子集进行编码,这样能够显著的减速计算和缩小内存应用,并且应用了具备三种密集输出模态的 MultiMAE 多模态预训练。每个工作应用一个独自的解码器,因而解码器的计算随着工作的数量线性扩大,并且只减少了最小的老本。 在他们的钻研中,图像分类、语义宰割和深度预计这三个工作上对 MultiMAE 进行了预训练,并在 ImageNet-1K 上进行伪标记,而后在 ImageNet、ADE20K、Taskonomy、Hypersim 和 NYUv2 数据集上进行微调。 结果表明,当 只应用RGB 进行微调时,MultiMAE 保留了惯例 MAE 的劣势,并且它还能够利用深度等其余模态,例如应用伪标记深度或语义宰割来进步性能。MultiMAE 预训练策略能够显着进步迁徙性能。 该项目标在 GitHub 上也公开了代码、预训练模型和交互式可视化。论文 MultiMAE: Multi-modal Multi-task Masked Autoencoders 公开材料汇总地址如下: ...

April 12, 2022 · 1 min · jiezi

关于神经网络:每秒百万条信息查询-天翼云助力江苏核酸检测信息查询

目前,由南京禄口国内机场外溢的新冠肺炎疫情感化链仍在缩短,牵动着全国人民的心。时有所需,必有所为。面对南京疫情,中国电信立刻做出反馈,争分夺秒彰显央企使命,全面响应江苏疫情防控战。面对此次来势汹汹的疫情,南京市目前已实现三轮核酸检测,共计产生2700万人次的检测后果。接下来,南京市将持续迎来第四轮核酸检测工作,扬州、淮安、宿迁等地将迎来第二次全民筛查。为保障江苏全省核酸检测稳步、迅速开展,7月30日,天翼云帮助江苏省卫健委搭建全新的省级核酸检测平台。该平台承载全省“苏康码”、“我的南京”及省级和十三个地市平台的调用需要,包含核酸检测后果的查问需要及重要防疫信息公布等,为江苏全省疫情防控提供无力保障。据理解,此次搭建的江苏省核酸检测平台,每秒查问速度可达100万条,大大晋升了平台的数据处理能力。8月1日下午,该核酸检测后果查问平台已顺利完成压力测试,并于当日24时正式上线,用于满足全省8000余万人口的查问需要,也因而将产生了大量数据。此次,天翼云依据核酸检测信息查问的动静需要,弹性扩大,目前网络带宽为1G,将来依据须要扩大至2G,同时采纳SCDN技术,每秒查问速度可达100万条。通过云计算能力,使零碎解决能力大大晋升,为市民提供更疾速的查问服务。除此之外,依靠中国电信高速、稳固的5G网络和天翼云的云直播技术,南京核酸检测点云直播平台顺利搭建实现并投入使用,南京市民能够随时随地查看核酸检测点的人流状况,正当抉择核酸检测时间段,防止由人员大量汇集所引发的危险。“咱们已经通过的还不是最艰巨的,更艰巨的是须要长期与病毒共存的智慧。”现在,当疫情防控成为一场持久战,天翼云将持续以科技力量铸就“抗疫利剑”,以央企担当,保障人民生命安全。

March 17, 2022 · 1 min · jiezi

关于神经网络:救救小王吧如何快速搞定图像相似性检测问题

相似性图像检测,是模型训练过程中常呈现的问题,本文介绍了 4 个罕用的哈希算法,并通过 Colab 代码,展现了残缺的训练过程。新晋炼丹师小王最近遇到了一个难题,愁的头发掉了好几根儿。 一问才晓得,原来是他徒弟给他调配了一个深度学习模型训练的工作,然而训练模型的图像数据集,稍微有那么一丝丝简单: 里边除了已有的公开数据集外,还蕴含一些从 Google、Bing 等网站上爬取的图像。 反复图像的存在,使得模型性能变得非常不牢靠,毕竟: 反复图像将 bias 引入数据集,使得深度学习模型不得不学习反复图像的特定模式;特定的学习模式,会使得深度学习模型概括新图像的能力降落。手动删除反复图像,相对不是最优解,起因是数据集中的图像数量动辄成千盈百万,手动检查和删除会是一个非(丧)常(心)繁(病)琐(狂)的过程,将会消耗大量工夫。 哈希算法成为小王最先想到的解决方案。 图像相似性检索,「哈希」一下哈希算法是解决图像相似性检索的「魔法工具」,它能够对任意一组输出数据进行计算,失去一个固定长度的输入摘要(字符串)。 比拟输入摘要,后果越靠近,就阐明图像越类似。 哈希算法具备以下特点: 雷同的输出肯定失去雷同的输入;不同的输出大概率失去不同的输入;留神: 哪怕两张输出图像之间,只有一个字节之差,输入的哈希值也可能天差地别。 ImageHash Python 库中,罕用的哈希算法包含 aHash、pHash、dHash 及 wHash。 Average Hash (aHash): 均值哈希算法,将图像切割成 8x8 的灰度图像,并根据像素值是否大于图像所有色彩的平均值,来设置哈希值中的 64 位。 aHash 计算速度快,不受图像尺寸大小影响,但对均值敏感,例如对图像进行伽马校对或直方图平衡会影响均值,从而导致报率,准确度无奈保障。 aHash 图像处理成果展现 Perceptual Hash (pHash): 感知哈希算法,与 aHash 相似,区别是 pHash 不依赖 average color,而是依赖离散余弦变换 (DCT),并根据频率 (frequency) 而非色彩值 (color value) 进行比拟。 pHash 能防止伽马校对或色彩直方图被调整带来的影响,它准确率高、误报少,但计算速度比较慢。 pHash 图像处理成果展现 Difference Hash (dHash): 差别值哈希算法与 aHash 原理相似,只是不应用均匀色彩值的信息,而是应用梯度(相邻像素的差别)。 dHash 算法运行速度与 aHash 相当,但误报率非常低。 ...

March 15, 2022 · 2 min · jiezi

关于神经网络:深度学习论文中的函数符号表示

sigmoid函数的符号示意办法1:sigmoid函数的符号示意办法2:

February 13, 2022 · 1 min · jiezi

关于神经网络:恒源云可构建AI的AI诞生

文章起源 | 学术头条 原文地址 | 几分之一秒内,就能预测新网络的参数 号外号外,我找到一个宝藏公众号啦,外面都是超赞的干货文章废话不多说,立马给大家分享 注释开始:人工智能在很大水平上是一场数字游戏。当深度神经网络在 10 年前开始超过传统算法,是因为咱们终于有了足够的数据和解决能力来充分利用它们。 明天的神经网络更依赖于数据和算力。训练网络时,须要认真调整表征网络的数百万甚至数十亿参数值,这些参数代表人工神经元之间连贯的强度。指标是为它们找到靠近现实的值,这个过程称为优化。但训练网络要达到这一点并不容易。伦敦 DeepMind 的钻研科学家 Petar Veličković 说:“训练可能须要破费几天、几周甚至几个月的工夫”。 但上述这种状况可能很快就会扭转。安大略省圭尔夫大学的 Boris Knyazev 和他的共事设计并训练了一个“超网络”——一种其余神经网络的“霸主”,该网络能够放慢训练过程。给定一个为某些工作设计的新的、未经训练的深度神经网络,超网络能够在几分之一秒内预测新网络的参数,实践上能够使训练变得不必要。因为超网络学习了深度神经网络设计中极其简单的模式,因而这项工作也可能具备更深层次的理论意义。这项钻研题为 Parameter Prediction for Unseen Deep Architectures。 目前,超网络在某些环境中体现的出乎意料地好,但仍有增长空间。Veličković 说:“如果他们能解决相应问题,这将对机器学习产生很大的影响”。 取得“超能力”目前,训练和优化深度神经网络的最佳办法是一种称为随机梯度降落技术(SGD)的变体。训练波及在给定工作中(例如:图像识别)最小化网络误差。SGD 算法通过大量标记数据来调整网络参数,并缩小误差或损失。梯度降落是损失函数从高值向降落到某个最小值的迭代过程,它代表了足够好的(有时甚至时最好的)参数值。 然而这种技术只有在网络须要优化时才无效。为了构建最后的神经网络(个别由从输出到输入的多层人工神经元组成),工程师必须依附直觉和教训法令。这些架构在神经元层数、每层神经元数等方面可能有所不同。 实践上,一个人能够从很多架构开始,而后优化每个架构并抉择最好的。但现任 Google Brain 的拜访研究员 MengYe Ren 说:“训练须要破费相当多的工夫,训练和测试每个候选网络架构是不可能的。它不能很好地扩大,尤其是思考到数百万种可能的设计。” 所以在 2018 年,Ren 和他在多伦多大学的前共事 Chris Zhang 及他们的参谋 Raquel Urtasun 尝试了一种不同的办法。他们设计了所谓的图超网络(Graph Hypernetwork: GHN),能够在给定一组候选架构的状况下,找到解决某些工作的最佳深度神经网络架构。 该名称概述了他们的办法。“图”指的是深度神经网络的架构,能够被认为是一个数学图——由线或边连贯的点或节点的汇合。这里的节点代表计算单元(通常是神经网络的整个层),边代表这些单元互连的形式。 图超网络的工作原理是首先对于任何须要优化的架构(称其为候选架构),它尽最大致力预测候选者的现实参数。而后将理论神经网络的参数设置为预测值,并在给定工作上对其进行测试。Ren 的团队表明,这种办法可用于对候选架构进行排名,并抉择体现最佳的架构。 当 Knyazev 和他的共事看到图超网络的想法时,他们意识到能够在此基础上进行构建。在他们的新论文中,该团队展现了如何应用 GHN,不仅从一组样本中找到最佳架构,还能够预测最佳网络的参数,使其在相对意义上体现良好。在还没有达到最好的状况下,其能够应用梯度降落进一步训练网络。 Ren 说:“这是一篇十分扎实的论文,它蕴含了更多咱们所做的试验。看到图超网络在十分致力地晋升相对性能,咱们大家都很快乐。” 训练“教练”Knyazev 和他的团队将他们的超网络命名为 GHN-2,它改良了Ren及其共事构建的图超网络的两个重要方面。 首先,他们依赖 Ren 等人将神经网络架构描述为图的技术。图中的每个节点都是对于执行某种特定类型计算的神经元子集的编码信息。图的边缘描述了信息如何从一个节点到另一个节点,从输出到输入。 第二,他们借鉴了训练超网络预测新的候选架构的办法。这须要另外两个神经网络。第一个启用对原始候选图的计算,从而更新与每个节点相干的信息,第二个将更新的节点作为输出,并预测候选神经网络的相应计算单元的参数。这两个网络也有本人的参数,必须在超网络正确预测参数值之前对其进行优化。 具体流程如下,首先你须要训练数据——候选人工神经网络(Artifical Neural Network: ANN)架构的随机样本。对于示例中的每一个架构,先从一个图开始,之后应用图超神经网络预测参数,并应用预测的参数初始化候选 ANN。应用 ANN 来执行一些特定的工作,如图像识别。通过计算 ANN 的损失函数,来更新做出预测的超网络参数,而不是更新 ANN 的参数做出预测。这样能够使超网络在每一次迭代后做的更好;而后,通过迭代标记过的训练数据集中的每一个图像和架构的随机样本中的每一个 ANN,来缩小每一步的损失,直到达到最优。个别这个状况下,你就能够失去一个训练有素的超网络。 ...

February 9, 2022 · 1 min · jiezi

关于神经网络:小Mi的MindSpore学习python在手word不愁

时隔良久,这不小Mi的python办公系列又更新啦!这次咱们学习如何用python解决word文件! 装置库说实话,库的装置其实相比excel来说真的就再简略不过啦,这次小Mi全程就只更新装置了一个库,代码如下:pip install python-docx 欧凯,那么这部分就曾经实现啦!(是不是超简略) 简略炫技这个时候小Mi很执拗,并不想走寻常路,只想用python编写一个word文件怎么办!小Mi通知你,仍旧很简略!代码参考如下: from docx import Document # 导入相干库 from docx.shared import Inches,Cm,Pt from docx.document import Document as Doc document = Document() # type: Doc 增加大题目(下面一行的正文也十分重要,否则无奈取得提醒)document.add_heading('快来MindSpore昇思论坛~', 0) 增加段落p = document.add_paragraph('MindSpore是由华为于2019年8月推出的新一代全场景AI计算框架,它') run = p.add_run('开发敌对、运行高效、部署灵便!') run.bold = True # 对run函数的内容进行加粗 run.font.size = Pt(26) # 设置字体的大小 增加图片document.add_picture('banner.png', width=Cm(10.4)) 增加分页符document.add_page_break() 保存文档运行成果: 3.高级炫技太简略了!真的是没有任何难度,所以这不小Mi须要给大家表演一个魔术! 假如场景: 咱们常常是不是须要解决很多文件,这些文件是不是都很相似,那么是不是能够设计一个模板进去,在须要大量编写这些word文件的时候,几行代码轻松搞定!比方公司入职人员的信息统计。 首先设定一个简略的word模板: 而后十分傲慢地附上代码: from docx import Document from docx.document import Document as Doc contracts = [ { 'company': 'A', 'number': '000451', 'start': '2020.1.6',},{ 'company': 'B', 'number': '000452', 'start': '2021.6.4',},{ 'company': 'C', 'number': '000453', 'start': '2021.10.9',},] ...

January 29, 2022 · 1 min · jiezi

关于神经网络:MindSpore跟着小Mi一起机器学习关于应用机器学习时的一些建议

到目前为止,小Mi曾经给大家介绍了许多不同的学习算法,感觉大伙曾经人不知;鬼不觉地成为一个理解许多先进机器学习技术的专家啦。当然,在理解的同时如何高效无力地使用这些学习算法呢?怎么抉择一条最合适、最正确的路线,而不是把工夫节约在毫无意义的尝试上呢?如果你想晓得的话,那么跟着小Mi持续机器学习吧~ 1 机器学习诊断法具体来说,咱们依然能够应用预测房价的学习例子为例,如果咱们曾经实现了正则化线性回归,也就是最小化代价函数的值,在咱们失去学习参数当前,如果将假如函数放到一组新的屋宇样本上进行测试时发现,预测的房价与理论数据产生了微小的误差。那么这个时候要做的必定就是改良这个算法啦,那么问题就来了,应该如何改良算法呢? 改良这个算法的性能,咱们最先想到的办法之一可能就是应用更多的训练样本。具体来讲就是获取更多的不同的屋宇理论发售数据。遗憾的是,好多人破费了好多工夫想收集更多的训练样本。他们总认为,要是有两倍甚至十倍数量的训练数据,那就肯定会解决问题的吧?但有时候取得更多的训练数据实际上并没有太大的作用。 另一个办法呢,可能有些人会尝试选用更少的特色集。如果有一系列特色比方等等。兴许有很多特色,兴许你能够花一点工夫从这些特色中认真筛选一小部分来避免过拟合。或者兴许你须要用更多的特色,兴许目前的特色集,对你来讲并不是很有帮忙。你心愿从获取更多特色的角度来收集更多的数据,同样地,你能够把这个问题扩大为一个很大的我的项目,比方应用电话考察来失去更多的屋宇案例,或者再进行土地测量来取得更多无关,这块土地的信息等等,因而这是一个简单的问题。同样的情理,咱们十分心愿在破费大量工夫实现这些工作之前,咱们就能晓得其成果如何。当然咱们也能够尝试减少多项式特色的办法,比方的平方,的平方,的乘积,咱们能够花很多工夫来思考这一办法,咱们也能够思考其余办法减小或增大正则化参数的值。咱们列出的这个单子,下面的很多办法都能够扩大开来扩大成一个六个月或更长时间的我的项目。遗憾的是,大多数人用来抉择这些办法的规范是凭感觉的,也就是说,大多数人的抉择办法是轻易从这些办法中抉择一种,比方他们会说“噢,咱们来多找点数据吧”,而后花上六个月的工夫收集了一大堆数据,而后兴许另一个人说:“好吧,让咱们来从这些房子的数据中多找点特色吧”。后果是很多人花了至多六个月工夫来实现他们轻易抉择的一种办法,而在六个月或者更长时间后,他们很遗憾地发现自己抉择的是一条不归路。侥幸的是,有一系列简略的办法能让你事倍功半,排除掉单子上的至多一半的办法,留下那些的确有前途的办法,同时也有一种很简略的办法,只有你应用,就能很轻松地排除掉很多抉择,从而为你节俭大量不必要破费的工夫。最终达到改良机器学习零碎性能的目标假如咱们须要用一个线性回归模型来预测房价,当咱们使用训练好了的模型来预测未知数据的时候发现有较大的误差,咱们下一步能够做什么? 1.取得更多的训练样本——通常是无效的,但代价较大,上面的办法也可能无效,可思考先采纳上面的几种办法。 2.尝试缩小特色的数量 3.尝试取得更多的特色 4.尝试减少多项式特色 5.尝试缩小正则化水平 6.尝试减少正则化水平 咱们不应该随机抉择下面的某种办法来改良咱们的算法,而是使用一些机器学习诊断法来帮忙咱们晓得下面哪些办法对咱们的算法是无效的。 在接下来的几个大节中,首先小Mi会给大家介绍怎么评估机器学习算法的性能,而后持续探讨这些办法,通常也能够称它们为"机器学习诊断法"。“诊断法”的意思是:这是一种测试法,你通过执行这种测试,可能深刻理解某种算法到底是否有用。最终咱们也能够晓得要想改良一种算法的成果,什么样的尝试,才是有意义的。当然,这些诊断法的执行和实现,有时候的确须要花很多工夫来了解和实现,但这样做反而能够把工夫用在刀刃上,因为这些办法能够帮忙咱们在开发学习算法时,节俭至多几个月的工夫。 2 评估一个假如在本节中,小Mi会给大家介绍一下怎么用你学过的算法来评估假如函数。前面的学习中,咱们还将以此为根底来探讨如何防止过拟合和欠拟合的问题。 当咱们确定学习算法参数的时候,咱们思考的是抉择参量来使训练误差最小化,有人认为失去一个十分小的训练误差肯定是一件坏事,但咱们曾经晓得,仅仅是因为这个假如具备很小的训练误差,并不能阐明它就肯定是一个好的假如函数。而且咱们也学习了过拟合假如函数的例子,所以这推广到新的训练集上是不实用的。 那么,该如何判断一个假如函数是过拟合的呢?对于这个简略的例子,咱们通常能够对假如函数进行画图,而后察看图形趋势。但对于特色变量不止一个的个别状况,想要通过画出假如函数来进行察看,就会变得很难甚至是不可能实现的。 因而,咱们须要另一种办法来评估咱们的假如函数过拟合测验。 为了测验算法是否过拟合,咱们将数据分成训练集和测试集,通常用70%的数据作为训练集,用剩下30%的数据作为测试集。很重要的一点是训练集和测试集均须要含有各种类型的数据。通常状况下咱们要对数据进行“洗牌”,而后再分成训练集和测试集。 测试集评估在通过训练集让咱们的模型学习得出其参数后,对测试集使用该模型,能够用两种形式计算误差: 对于线性回归模型,利用测试集数据计算代价函数J对于逻辑回归模型,除了能够利用测试数据集来计算代价函数外: 误分类的比率,对于每一个测试集样本,计算: 而后对计算结果求均匀。 3 模型抉择和穿插验证集假如咱们要在10个不同次数的二项式模型之间进行抉择: 显然越高次数的多项式模型越可能适应咱们的训练数据集,然而适应训练数据集并不代表着能推广至个别状况,咱们应该抉择一个更能适应个别状况的模型。咱们须要应用穿插验证集来帮忙抉择模型。 即:应用60%的数据作为训练集,应用 20%的数据作为穿插验证集,应用20%的数据作为测试集 模型抉择的办法为: 1.应用训练集训练出10个模型 2.用10个模型别离对穿插验证集计算得出穿插验证误差(代价函数的值) 3.选取代价函数值最小的模型 4.用步骤3中选出的模型对测试集计算得出推广误差(代价函数的值) 4 诊断偏差和方差当运行一个学习算法时,如果这个算法的体现不现实,那么多半是呈现两种状况:要么是偏差比拟大,要么是方差比拟大。换句话说,呈现的状况要么是欠拟合,要么是过拟合问题。那么这两种状况,哪个和偏差无关,哪个和方差无关,或者是不是和两个都无关?搞清楚这一点十分重要,因为能判断呈现的状况是这两种状况中的哪一种,能够指引咱们抉择最无效的办法和路径进行算法上的改良。另外,小Mi具体解说一下无关偏差和方差的问题,帮忙大家弄清楚怎么评估一个学习算法,判断其是偏差还是方差有问题,因为这个问题对于弄清如何改良学习算法的成果十分重要,高偏差和高方差的问题基本上来说是欠拟合和过拟合的问题。 咱们通常会通过将训练集和穿插验证集的代价函数误差与多项式的次数绘制在同一张图表上来帮忙剖析: 对于训练集,当d较小时,模型拟合水平更低,误差较大;随着d 的增长,拟合水平进步,误差减小。 对于穿插验证集,当d 较小时,模型拟合水平低,误差较大;然而随着d的增长,误差出现先减小后增大的趋势,转折点是咱们的模型开始过拟合训练数据集的时候。 如果咱们的穿插验证集误差较大,咱们如何判断是方差还是偏差呢?依据下面的图表,咱们晓得: 训练集误差和穿插验证集误差近似时:偏差/欠拟合 穿插验证集误差远大于训练集误差时:方差/过拟合 5 正则化和偏差/方差在训练模型的过程中,个别会应用一些正则化办法来避免过拟合。然而咱们可能会正则化的水平太高或太小了,即咱们在抉择的值时也须要思考与方才抉择多项式模型次数相似的问题。 抉择测试的也是值得讲究的,通常是0-10之间的出现2倍关系的值(如:0,0.01,0.02,0.04,0.08,0.15,0.32,0.64,1.28,2.56,5.12,10共12个)。 咱们同样把数据分为训练集、穿插验证集和测试集。 抉择的办法为: 1.应用训练集训练出12个不同水平正则化的模型 2.用12个模型别离对穿插验证集计算的出穿插验证误差 3.抉择得出穿插验证误差最小的模型 4.使用步骤3中选出模型对测试集计算得出推广误差,咱们也能够同时将训练集和穿插验证集模型的代价函数误差与的值绘制在一张图表上: 当较小时,训练集误差较小(过拟合)而穿插验证集误差较大 随着的减少,训练集误差一直减少(欠拟合),而穿插验证集误差则是先减小后减少。 6 学习曲线学习曲线就是一种很好的工具,能够应用学习曲线来判断某一个学习算法是否处于偏差、方差问题,也就是说学习曲线是学习算法的一个很好的正当测验(sanity check)。学习曲线是将训练集误差和穿插验证集误差作为训练集样本数量(m)的函数绘制的图表。 即,如果咱们有100行数据,咱们从1行数据开始,逐步学习更多行的数据。思维是:当训练较少行数据的时候,训练的模型将可能十分完满地适应较少的训练数据,然而训练进去的模型却不能很好地适应穿插验证集数据或测试集数据。 如何利用学习曲线辨认高偏差/欠拟合:作为例子,咱们尝试用一条直线来适应上面的数据,能够看出,无论训练集有如许大误差都不会有太大改观: 也就是说在高偏差/欠拟合的状况下,减少数据到训练集不肯定能有帮忙。 如何利用学习曲线辨认高方差/过拟合:假如咱们应用一个十分高次的多项式模型,并且正则化十分小,能够看出,当穿插验证集误差远大于训练集误差时,往训练集减少更多数据能够进步模型的成果。 总结来说,在高方差/过拟合的状况下,减少更多数据到训练集可能会进步算法成果。 7 具体应答办法小Mi曾经带大家学习了怎么评估一个学习算法,探讨了模型抉择问题,偏差和方差的问题。那么这些诊断法令怎么帮忙咱们判断,哪些办法可能有助于改良学习算法的成果,而哪些可能是徒劳的呢? 回顾第一节中提出的六种可选的下一步,让咱们来看一看咱们在什么状况下应该怎么抉择: 1.取得更多的训练样本——解决高方差 2.尝试缩小特色的数量——解决高方差 3.尝试取得更多的特色——解决高偏差 4.尝试减少多项式特色——解决高偏差 ...

January 28, 2022 · 1 min · jiezi

关于神经网络:MindSpore跟着小Mi一起机器学习支持向量机上

明天咱们学习反对向量机!小Mi在办公室的时候常常会听到共事提及什么反对向量机啊,凸优化啊这样的名词,那么反对向量机到底是什么呢?明天让咱们过去一探到底!~~ 1 优化指标与逻辑回归和神经网络相比,反对向量机,简称SVM,在学习简单的非线性方程时提供了一种更为清晰,更加弱小的形式,该算法的弱小和受欢迎水平,EMMMM,小Mi不多说,大家能够略微脑补那么一下下,同时它也是小Mi带大家学习的最初一个监督学习算法(上面就开始转向无监督学习算法啦~)。 因为算法之间都有很多相似性,和别的算法一样,反对向量机的形容也将会从逻辑回归开始展现如何一点一点批改从而得出的。 大家必定不会生疏,上图波及的便是逻辑回归中的假如函数以及S型激励函数。这里用z来简化示意。 而咱们想要逻辑回归做什么呢?如果有一个y=1的样本(不论是在训练集中或是在测试集中,又或者在穿插验证集中),咱们心愿趋近1。如果咱们想要正确地将此样本分类,这也就意味着当趋近于1时,该当远大于0。而从图像中咱们能够晓得,当z远大于0时,也就是纵轴的右侧,不难发现此时逻辑回归的输入将趋近于1。同理,如果有另一个样本,即y=0,也就意味着咱们心愿假如函数的输入值将趋近于0,对应的或z会远小于0,因为假如函数的输入值趋近0。 同时咱们再来看下逻辑回归的代价函数,每个样本(x,y)都会为总的代价函数,减少这样的一项: 因而,总的代价函数通常会对所有的训练样本求和,从第一项到第m项,而在逻辑回归中,这一项就示意一个训练样本所对应的表达式。 当初,先疏忽这一项,一起来思考两种状况:一种是y等于1的状况;另一种是y等于0的状况。 在第一种状况中,假如y=1 ,此时指标函数中只有第一项起作用,因为(1-y)项将等于0。因而,当在y=1的样本中时,即在(x,y)中 ,。 如果画出对于z的函数,你会看到这样一条曲线: 当z增大时,也就是相当于增大时,z对应的值会变的十分小。对整个代价函数而言,影响也十分小。这也就解释了,为什么逻辑回归在察看到正样本y=1时会试图将设置得十分大。因为,在代价函数中的这一项会变的十分小。 好了,构建反对向量机就要开始咯: 将代价函数稍作批改,取z=1点,新的代价函数便由下图中粉线示意。 这和逻辑回归中应用的代价函数很类似。由两条线段组成,即位于左边的程度局部和位于右边的直线局部。当然,如果咱们将应用新的代价函数(假设其为),前提条件是y=1。 另外一种状况是当y=0时,此时代价函数只剩下第二项。 而此时新的代价函数(假设其为)则是从0点开始的程度直线,而后是一条斜线,如上图。 下图是咱们在逻辑回归中应用代价函数: 对于反对向量机而言,本质上咱们要将前局部替换为,同样地,第二项替换为: 因而,对于反对向量机,最小化问题为: 首先,咱们要除去这一项,因为仅是个常量,无论后面是否有这一项,最终失去的最优值都是一样的。 举个简略的例子:假设有个最小化问题:即要求当获得最小值时的值,这时最小值为:过后获得最小值。 而如果将这个指标函数乘上常数10,这里最小化问题就变成了:求使得最小的值,后果并不会产生任何变动。因而,删去常量m并不会扭转获得最小值时的值。 第二点批改看这里。对于逻辑回归中的指标函数,第一项是训练样本的代价,第二项是正则化项,能够简略看作是这样一个式子,而须要做的是通过设置不同正则参数达到优化目标。这样,咱们就可能衡量对应的项,使得训练样本拟合的更好,即最小化A;还是保障正则参数足够小,更多地重视B项。但在反对向量机中,咱们通常会应用一个不同的参数C来替换这里的。优化指标为最小化。 因而,在逻辑回归中,如果把设为一个十分大的值,意味着给予B更大的权重。而这里,就对应于将C设定为十分小的值。因而,这只是一种不同的形式来管制A与B之间的均衡,即用参数来决定是偏差于第一项的优化还是第二项。(当然,小Mi认为咱们也能够把这里的参数C看作,大家感觉有情理不?) 最终反对向量机的总体优化指标就能够示意为: 最初有一点不同的是,反对向量机并不会像逻辑回归一样输入概率。反对向量机则是进行了一个间接的预测,预测y的值等于1还是0: 以上便是反对向量机假如函数的模式。 2 大边界的直观了解 上图是反对向量机模型的代价函数,在右边画出了代价函数,此函数用于正样本,而在左边画出了代价函数。而最小化这些代价函数的必要条件又是什么呢?如果有一个正样本y=1,则只有在时,代价函数才等于0。换句话说,如果有一个正样本,咱们会心愿,反之,如果y=0,函数只有在的区间里函数值为0。事实上,如果有一个正样本y=1,则其实咱们仅仅要求大于等于0,就能将该样本正确分类,这是因为如果的话,咱们的模型代价函数值为0,相似地,如果你有一个负样本,则仅须要就会将样本正确分类。然而,反对向量机的要求更高,不是恰好能够正确分类这么简略,即不是略大于0就能够了,咱们须要的是比0值大很多以及比0小很多,比方大于等于1和小于等于-1,这就相当于在反对向量机中嵌入了一个平安间距。 而在反对向量机中,这个间距又会导致什么后果呢?举个特例。咱们将这个常数C设置成一个十分大的值。比方咱们假如C的值为100000或者其它十分大的数,而后来察看反对向量机会给出什么后果? 如果C十分大,则最小化代价函数的时候,咱们将会很心愿找到一个使第一项为0的最优解。 输出一个训练样本,标签为y=1,如要令第一项为0,须要找到一个,使得;相似地,对于训练样本y=0,为了使函数的值为0,须要。因而,优化问题就是抉择什么样的参数能力使得第一项等于0,同时须要遵循约束条件:如果是等于1的,那么;如果样本是一个负样本,: 当解决这个优化问题的时候,也就是最小化这个对于变量的函数时,咱们会失去一个十分乏味的决策边界。 具体而言,(其中有正样本,也有负样本)能够看到这个数据集(其中有正样本,也有负样本)是线性可分的。 比方上图的绿线就是一个决策边界能够把正样本和负样本离开,然而多多少少看起来并不是十分天然,粉线是另一条决策边界,能够勉强将正样本和负样本离开。而黑线看起来好得多,在拆散正样本和负样本上它显得的更好。从数学上来讲,这条黑线领有更大的间隔,这个间隔叫做间距(margin)。 具体来说,彩色的决策界和训练样本之间有更大的最短距离。然而粉线和蓝线离训练样本就十分近,在拆散样本的时候就会比黑线体现差。因而,这个间隔就叫做反对向量机的间距,而这是使得反对向量机具备鲁棒性的起因,因为它在拆散数据时会尽量用一个最大间距来拆散样本。所以反对向量机有时也被称为大间距分类器。 那么为什么这个优化问题会产生大间距分类器呢? 一开始咱们就将这个大间距分类器中的正则化因子常数设置的十分大,将其设为了100000,因而对上图中的数据集,兴许咱们将抉择黑线这样的决策界,从而最大间距地分来到正样本和负样本。 那么在让代价函数最小化的过程中,咱们心愿找出在y=1和y=0两种状况下都使得代价函数中右边的这一项尽量为零的参数。如果咱们找到了这样的参数,则咱们的最小化问题便转变成: 实际上,反对向量机要比这个大间距的视图更加简单,尤其是当咱们只应用大间距分类器的时候,学习算法会对异样点十分敏感,比方咱们退出一个额定的正样本。 在这里,仅仅基于一个异样值,仅仅基于一个样本,决策界就从这条黑线变到这条粉线,这是很不合理的。而如果正则化参数C设置的十分大,它将决策界从黑线变到了粉线;然而如果C设置的小一点,那么咱们最终会失去这条黑线。因而,大间距分类器的形容,仅仅是从直观上给出了正则化参数C十分大的情景,C的作用相似于,是咱们之前应用过的正则化参数。但实际上利用反对向量机的时候,当C不是十分十分大的时候,它能够疏忽掉一些异样点的影响,失去更好的决策界。甚至当数据不是线性可分的时候,反对向量机也能够给出很好的后果。 因而: C较大时,相当于较小,可能会导致过拟合,高方差。 C较小时,相当于较大,可能会导致低拟合,高偏差。 明天对于反对向量机的介绍小Mi就先说到这啦,前面还会波及反对向量机的偏差和方差,巴拉巴拉等等,咱们下周再见~(挥手十分钟!)

January 28, 2022 · 1 min · jiezi

关于神经网络:自然语言处理之关键词提取一

一. 摘要 本次的分享中,咱们将理解目前较罕用的关键词提取技术。关键词是代表文章重要内容的一组词。在文本的分类聚类、主动摘要等方面有着重要的作用。还能够让人们更直观便捷的浏览文本信息。在事实的罕用文本中是不蕴含关键词的,所以主动提取关键词技术有着很重要的意义。 二. 关键字提取技术概述 在巨量的信息背后,很多信息是咱们无奈全面接管,因而咱们须要从中筛选出一些咱们感兴趣的或者有代表性的信息进行接管。那么这一个过程就是关键词提取技术。如果咱们能够精确的将所有的文档都用几个简略的关键词形容,那么咱们便能够通过关键词理解一篇文章的内容,这将会进步信息获取到效率。 关键词提取算法个别能够分为有监督和无监督两类。有监督的关键词提取办法次要是通过分类的形式进行,首先通过创立一个比拟丰盛欠缺的词表,而后通过计算类似度判断每个文档与词表中每个词的匹配水平,相似打标签的形式,以此达到关键词提取的成果。有监督的办法尽管能够获取到较高的提取精度,然而须要大批量的标注数据,人工成本十分高。另外,古代信息量爆炸式增长,会新增出大量的新信息,一个固定的词表代表范畴无限,很难将这类信息内容表述进去,但要人工保护这个受控的词表须要很大的人力老本,这就成为了有监督办法在应用上的一个很大短板。 比照有监督的关键词提取办法,无监督的办法对数据的要求就低了很多。不须要人工创立、保护词表,也不须要人工标准语料辅助进行训练。因而,这类的关键词提取技术利用更广泛。本次分享咱们的次要介绍的关键词提取技术是TF-IDF算法和TextRank算法。 三. TF-IDF算法 TF-IDF算法(Term Frequency-Inverse Document Frequency,词频-逆文档频次算法)是一种基于统计的计算方法,罕用于评估在一个文档集中一个词对某份文档的重要水平。这种思维是合乎关键词抽取的需要,一个词语对文档越重要,那么是关键词的概率就越大,所以通常将TF-IDF算法利用在关键词提取中。 首先从算法的名称剖析,TF-IDF算法是由两局部组成:TF算法和IDF算法。TF算法是统计一个词在一篇文档中呈现的频次,根本思维了解为:一个词在一篇文档中呈现的次数越多,那么这个词对文档的表达能力就越强。而IDF算法是统计一个词在文档集中的多少个文档中呈现,根本思维了解为:如果一个词在越多数的文档中呈现,则对文档的辨别能力就越强。 TF算法和IDF算法也能够独自应用,然而两种算法独自应用过程中都有其有余的中央。TF算法仅仅可能掂量词在一篇文档的呈现频次,没有思考到词对文档的辨别能力。而IDF算法则是相同,强调的是词的辨别能力,然而一个词既然可能在一篇文档中频繁呈现,也示意这个词能够很好的表征这篇文档的特色,如果漠视这点显然也是很不合理的。于是,通过理论思考将这两种算法综合应用,组合成TF-IDF算法,从词频、逆文档频次两个方面对词的代表能力进行掂量。 image.png 图1:TF表达式 在理论的应用中,TF的计算表达式如图所示。其中nij示意词i在文档j中的呈现次数。然而仅用频次来示意,长文本中的词呈现频次高的概率会更大,这一点会影响到不同文档之间关键词权值的比拟。所以在计算过程中个别会对词频进行归一化。分母的局部就是统计文档中每一个词呈现次数的总和,也就是文档中词的总数量。 image.png 图2:IDF表达式 IDF算法的计算表达式如图所示。|D|示意文档集中总文档数,|Di|示意文档集中呈现词i的文档数量。分母中+1是采纳了拉普拉斯平滑思维,防止有局部新词没有在语料库中呈现过而导致分母为零的状况呈现,有加强算法健壮性的作用。 image.png 图3:TF-IDF表达式 TF-IDF算法表达式如上图中所示,TF-IDF算法就是TF算法与IDF算法的综合应用,对于这两种算法的组合,通过大量的实践推导和试验钻研后,发现以取IDF算法值的对数,而后相乘是较为无效的计算形式。 除了上述提到的传统TF-IDF算法之外,TF-IDF算法还有很多变种的加权办法。传统的TF-IDF算法中,仅仅思考到了词的两个统计信息。因而,其对文本的信息利用水平显然是比拟少的。所以除了上述的信息外,一个文本中还有很多的信息可能对关键词的提取起到很好的辅助作用,例如每个词的词性、呈现的地位等等。算法自身的定义是死的,然而联合咱们的利用场景,对算法进行正当的革新和补充,使之可能更适应应用环境,这样能够更好的失去想要的后果。 四. TextRank算法 在上述的TF-IDF算法中,都须要基于一个现成的语料库,主题模型的关键词提取算法则是须要通过对大规模文档学习,发现文档的隐含主题。而TextRank算法则是能够脱离语料库的根底,仅对单篇文档进行剖析就能够提取该文档的关键词。这也是TextRank算法的重要特点。TextRank算法的根本思维源于Google的PageRank算法。因而这里须要先理解下PageRank算法。 image.png 图4:PageRank算法示意图 PageRank算法是一种网页排名算法,其根本思维有两个:(1)链接数量。一个网页被越多的其余网页链接,示意这个网页越重要;(2)链接品质。一个网页被一个越高权值的网页链接,也示意这个网页越重要。 image.png 图5:PageRank算法表达式 In(Vi)为Vi的入链汇合,Out(Vj)为Vj的出链汇合,|Out(Vj)|则是出链的数量。因为每一个网页要将它本身的分数均匀地奉献给每个链接,那么S(Vj)/|Out(Vj)|即为Vj奉献给Vi的分数。将Vi的所以入链奉献给它的分数相加,就是Vi本身的数值。以这种形式来计算每个网页的分数就会有一个问题,每个网页的得分都与其链接的网页的分数无关,那么其链接网页的数值该如何确定?为解决这个问题,算法开始时会将所以网页的得分初始化为1,而后通过屡次迭代来对每个网页的分数进行收敛。收敛失去的数值为最终得分。 image.png 图6:PageRank算法革新表达式 在图5表达式中计算会导致一些孤立网页得分为零。为防止这种状况呈现,对图5中公式进行革新,退出了阻尼系数d,革新后表达式如图6中所示,这样即便是孤立的网页,也可得出数值。 上述便是PageRank算法的实践,也是TextRank算法的实践根底。不同的是PageRank是又向无权图,而TextRank进行主动摘要则属于有权图,因为在计分时除了思考链接句子的重要性外,还要思考两个句子的相似性。因而TextRank的残缺表达式为 image.png 图7:TextRank算法革新表达式 在计算每个句子给他链接句的奉献时,就不采纳平均分配的形式,而是通过计算权重占总权重的比例进行调配,这里的权重就是两个句子的类似度值。类似度计算的办法能够采纳间隔类似度、余弦类似度等。在对一篇文档进行主动摘要的时候,默认每个语句和其余语句都有链接关系,也就是又向齐全图了。 当TextRank利用到关键字抽取的时候,与利用在主动摘要中有两个不同的中央:(1)词与词之间的关联没有权重;(2)每个词不是与其余所以词都有链接。 因为第一点的不同,那么TextRank重点分数计算将会进化,将得分均匀奉献给每个链接的词。 image.png 图8:TextRank算法革新词表达式 对于第二点的不同,既然每个词与其余所有词并不是都相连,那么他们两头的链接关系该如何设定呢。这里的TextRank利用在关键字提取中时,退出了一个窗口的概念,在窗口中的词都是相互链接的。上面咱们用示例展现一下窗口的概念利用。 原文档:詹姆斯夺得了职业生涯第4座总冠军。 分词后:[詹姆斯, 夺得, 了, 职业, 生涯, 第, 4, 座, 总冠军]。将窗口大小设置为4,能够失去以下几个窗口: [詹姆斯, 夺得, 了, 职业][夺得, 了, 职业, 生涯][了, 职业, 生涯, 第][职业, 生涯, 第, 4][生涯, 第, 4, 座][第, 4, 座, 总冠军]每个窗口内的所有词都有链接关系,比方[詹姆斯]和[夺得, 了, 职业]之间有链接关系。此时便能够套用TextRank的公式,对每个词进行得分的计算。最初便能够抉择出得分最高的n个词作为文档的关键词。 ...

January 25, 2022 · 1 min · jiezi

关于神经网络:强化学习的探索和利用

一. 简述 在和环境一直交互的过程中,智能体在不同的状态下不停地摸索,获取不同的动作的反馈。摸索(Exploration)可能帮忙智能体通过一直试验取得反馈,利用(Exploitation)是指利用已有的反馈信息抉择最好的动作。因而如何均衡摸索和利用是智能体在交互中一直学习的重要问题。 二. 什么是摸索和利用? 场景假如:假如咱们开了一家叫Surprise Me的饭馆,客人来了不必点餐,而是用算法来决定该做哪道菜。具体过程为: (1)客人 user = 1,...,T 顺次达到饭馆。 (2)给客人举荐一道菜,客人承受则留下吃饭(Reward=1),回绝则来到(Reward=0)。 (3)记录抉择承受的客人总数 total_reward。 为了由浅入深地解决这个问题,咱们先做以下三个假如。 (a)同一道菜,有时候会做得好吃一些(概率=p),有时候会难吃一些 (概率 = 1−p),然而并不知道概率p是多少,只能通过屡次观测进行统计。 (b)不思考集体口味的差别,即当菜做得好吃时,客人肯定会留下 (Reward=1);当菜不好吃时,客人肯定会来到(Reward=0)。 (c)菜好吃或不好吃只有客人说的算,饭馆是当时不晓得的。 摸索阶段:通过屡次观测推断出一道菜做得好吃的概率。如果一道菜曾经举荐了k遍(获取了k次反馈),就能够算出菜做得好吃的概率 如果举荐的次数足够多,k足够大,那么 会趋近于实在的菜做得好吃的概率p。 利用阶段:已知所有的菜做得好吃的概率,决定该如何举荐?如果每道菜都被举荐了很多遍,就能够计算出每道菜做得好吃的概率 ,于是只需举荐 最大的那道菜。 摸索和利用的均衡是一个经久不衰的问题。一是,摸索的代价是要不停地拿用户去试菜,影响客户的体验,但有助于更加精确的预计每道菜好吃的概率;二是,利用会基于目前的预计拿出“最好的”菜来服务客户,但目前的预计可能是不准的(因为试吃的人还不够多)。 三. 如何均衡摸索和利用? 如何均衡摸索和利用呢?能够应用∈-greedy算法,即每当客人到来时,先以的概率抉择摸索,从N道菜中随机抉择(概率为∈/N)一个让客人试吃,依据客人的反馈更新菜做得好吃的概率;而后,以1-∈的概率抉择利用,从N道菜 中抉择好吃的概率最高的菜举荐给用户。 ∈-greedy算法也存在一些毛病,比方,在试吃次数雷同的状况下,好吃和难吃的菜失去试吃的概率是一样的:有一道菜继续失去好吃的反馈,而另一道菜继续失去难吃的反馈,但在∈-greedy中,摸索两道菜的概率是一样的,均为∈/N;在预计的胜利概率雷同的状况下,试吃次数多的和试吃次数少的菜失去再试吃的概率是一样的:假如有两道菜,第一道菜50人当中30集体说好,第二道菜5集体当中3集体说好,尽管两道菜的胜利概率都是60%(30/50 = 3/5),但显然反馈的人越多,概率预计的越准。再摸索时,应该把重心放在试吃次数少的菜上。 总结一下,∈-greedy僵硬地将抉择过程分成摸索阶段和利用阶段,在摸索时对所有物品以同样的概率进行摸索,并不会利用任何历史信息,包含某道菜被摸索的次数和某道菜取得好吃反馈的比例。 无妨让咱们遗记摸索阶段和利用阶段,认真想想如何充沛地利用历史信息,找到最值得被举荐的菜。 观测 1:如果一道菜曾经被举荐了k遍,同时获取了k次反馈,就能够算出菜做得好吃的概率: image.png 当k趋近正无穷时,p会趋近于实在的菜做得好吃的概率p。 观测 2:事实当中一道菜被试吃的次数k不可能无穷大,因而预计出的好吃的概率p和实在的好吃的概率p总会存在一个差值。 基于下面两个观测,咱们能够定义一个新的策略:每次举荐时,总是乐观地认为每道菜可能取得的回报是 +,这便是驰名的置信区间上界(Upper Confidence Bound,UCB)算法。最初只需解决一个问题:计算实在的概率和预计的概率之间的差值。 四. 最新利用 举荐零碎:举荐零碎的罕用形式,其次要是寻找损失函数评估能够使模型预测后果和即时用户相应之间差别最小化的模型。也就是示意,传统的举荐零碎模型没有明确思考到用户的长期趣味。但用户的趣味会依据其看到的内容随着工夫而变动,而推荐者的行为可能会显著的受到此类变动的影响。 为了解决无模型工作的样本复杂度大的问题,基于模型的深度强化学习对解决举荐零碎的问题更为牢靠。该举荐零碎框架应用对立的极小化极大框架学习用户行为模型和相干的处分函数,而后再利用用户行为模型学习深度强化学习策略 image.png 博弈游戏:近年来,深度强化学习在游戏博弈的利用越来越宽泛。特地实用于领有微小状态空间、宏大的动作空间、部分察看、多玩家同时在线游戏个性的游戏。 image.png AlphaGo在初期版本中,通过与人类棋手的棋谱进行学习训练,学习到如何下围棋。AlphaGo Zero则跳过该步骤,通过自我对弈学习下棋,从零学起,因而也命名为Zreo。该算法零碎从一个对为围棋无所不知的深度学习网络开始,将该深度神经网络和搜索算法联合,进行自我对弈。对弈过程中,深度神经网络一直调整、降级其参数,用于预测每一步落子的概率和最终的胜利者。 五. 总结 强化学习就是这样一直的对数据进行摸索尝试,再将尝试失去的后果反馈到模型中,让参数失去优化,使得最终的模型性能最优。强化学习能够利用在领有微小状态空间、宏大的动作空间的工作场景中。

January 25, 2022 · 1 min · jiezi

关于神经网络:强化学习的基本求解方法二

简介工夫差分法次要基于工夫序列的差分数据进行学习,其分为固定策略和非固定策略两种。固定策略工夫差分法以Sarsa算法为代表;非固定策略以Q-Learning算法为代表。 Sarsa算法Sarsa(state-action-reward-state-action)算法的目标是预计动作值函数q(s,a),即预计在策略下对任意状态s上所有可能执行动作a的动作值函数q(s,a)。其动作值函数表达式函数为: image.png 式子中的=rt+1+q(st+1,at+1)——工夫差分指标(Target); -q(st,at)——工夫差分误差(Error)。 式子中的动作值函数的每一次更新都须要用到5个变量:以后状态s、以后动作a、环境反馈处分r、下一时间步状态s’和下一时间步动作a’。这5个变量组合成(s,a,r,s’,a’),便是工夫差分管制Sarsa算法的由来。其具体算法流程如下: 输出:随机状态s 输入:动作值函数q(s,a) (1) 初始化: (2)对于任意状态s,设置q(s,a)为任意值 (3)反复教训轨迹: (4) 初始化状态s (5) 依据动作值q,在状态s下执行动作a (6) 反复教训轨迹中工夫步t: (7) 依据动作值q,在状态s下执行动作a (8) 更新动作值函数:q(s,a)←q(s,a)+[r+q(s’,a’)-q(s,a)] (9) 记录新的状态和动作,s←s’,a←a’ (10) 直至终止状态s (11)输入动作值函数q(s,a) image.png Sarsa算法首先随机初始化动作值函数q,随后迭代式地进行教训轨迹的采样。在采集某一条教训轨迹时,智能体首先依据贪心策略(Greedy Policy),在状态s下抉择并执行动作a;接下来在环境中进行学习,并更新动作值函数q(s,a),直至算法完结。 Q-Learning算法Q-Learning算法在动作值函数q(s,a)更新中,采纳的是不同于抉择动作时所遵循的策略。该算法动作值函数q(s,a)的更新如下: image.png 与Sarsa算法相比拟,区别在于Q-Learning算法更新Q值时,工夫差分指标应用动作值函数最大值maxq(st+1,at),与以后抉择动作所应用的策略无关,因而动作值Q往往是最优的。 其算法流程如下所示。与Sarsa相似,区别在进入反复教训轨迹的循环后,Q-Learning算法在初始化状态s后,间接进入该教训轨迹的迭代中,并依据贪心策略在状态s’下抉择动作a’。 输出:随机状态s 输入:动作值函数q(s,a) (1)初始化: (2)对于任意状态s,设置q(s,a)为任意值 (3)反复教训轨迹: (4) 初始化状态s (5) 反复教训轨迹中工夫步t: (6) 依据动作值q,在状态s下执行动作a (7) 执行动作a,取得处分和下一时间步的状态s’ (8) 更新动作值函数:q(s,a)←q(s,a)+a[r+maxq(s’,a)-q(s,a)] (9) 记录新的状态,s←s’ (10) 直至终止工夫步Ts (11)输入动作值函数q(s,a) image.png 总结工夫差分法与蒙特卡罗法相似,基于采样数据预计以后价值函数。不同的是工夫差分法采纳动静规划法中的晋升算法(Boosting)计算以后价值函数,而蒙特卡罗是在每次采样完结之后能力计算以后的价值函数。 image.png 从算法来看,这就是他们两最大的不同之处了。因为Sarsa是说到做到型,所以也能够称之为on-policy,在线学习,能够学着本人在做的事件。而Q- learning是说到但并不一定做到,所以它也叫作Off-policy,离线学习。而因为有了maxQ,Q-learning也是一个特地怯懦的算法。为什么说他怯懦呢,因为Q-learning永远都会抉择最近的一条通往指标的路线,不论这条路会有多危险。而Sarsa则是相当激进,他会抉择躲避非凡状况,达到目标是主要的,首先要保障安全性,这就是应用Sarsa办法的不同之处。

January 25, 2022 · 1 min · jiezi

关于神经网络:强化学习的基本求解方法一

简介上一节次要介绍了强化学习的基本概念,次要是通过设定场景带入强化学习的策略、处分、状态、价值进行介绍。有了根本的元素之后,就借助马尔可夫决策过程将强化学习的工作形象进去,最初应用贝尔曼方程进行表述。本次内容次要是介绍强化学习的求解办法。也等同于优化贝尔曼方程。 贝尔曼方程首先咱们回顾一下贝尔曼方程。贝尔曼方程能够用于示意在以后时刻t状态的价值和下一时刻t+1状态的价值之间的关系。因而状态值函数v(s)和动作值函数q(s,a)的动静关系都可套用贝尔曼方程进行示意。 这里以状态值函数v(s)为例应用贝尔曼方程进行示意。那么就须要将式子1进行带入,整体能够分为两个局部:第一局部能够了解为即时的处分rt;另一部分示意的是将来状态的折扣价值v(st+1): image.png 式子1 那么,状态值函数的贝尔曼方程进化变成为: image.png 式子2 式子2示意以后状态s的价值函数,由以后状态取得的处分Rs加上通过状态间转换概率Pss乘以下一状态的状态值函数v(s)失去,其中是将来折扣因子。最初能够将表达式简化为式子3的状态: image.png 式子3 动静规划法动静布局的解决思维:把一个简单的原始问题合成为多个子问题,再对每一个子问题求解,得出每个子问题的解后,把所有子问题的解进行联合,从而解决困难的原始问题。其中的“动静”指的是问题由系列的状态组成,而且可能随着工夫的变动而逐渐变动,“布局”就是优化每一个子问题。 根本的原理是在计算值函数时用到以后状态s的所有后续状态s的值函数,后续状态值函数依据环境模型中的MDP的p(s|s,a)计算失去,值函数的计算表达式为: image.png 式子4 策略评估:首先在环境模型已知的状况下,策略评估(Policy Evaluation)用于对任意策略进行正当的预计该策略将带来的累计处分冀望及精确掂量该策略的优略水平。策略评估通过计算与策略对应的状态值函数v(s),以评估该策略的优劣。即给定一个策略,计算基于该策略下的每一个状态s的状态值v(s)的冀望,并用该策略下单最终状态的冀望来进行评估策略。 策略改良:策略评估的目标时掂量策略的优劣水平,而策略改良(Policy Improvement)的目标是找到更优的策略。首先通过策略评估计算处以后策略的状态值v(s),而后策略改良算法基于计算失去的状态值v(s)进一步计算求解,以便找到更优的策略。 策略迭代算法:策略迭代(Policy Iteration)由策略评估和策略改良互相组合而成。假如有一个策略0,首先利用策略评估取得该策略的状态值函数v0(s);而后基于策略改良,取得更优的策略1;接着再次利用策略评估失去新的策略1对应的状态值函数v1(s);最初依据策略改良取得更优的策略2.根据上述的步骤,屡次交替应用策略迭代和策略改良,通过多轮的交替,策略迭代算法一直迫近最优状态值v(s),最初能够找到最优策略及其对应的状态值函数v(s)。 值迭代算法:联合策略评估和策略改良,策略迭代算法能够转换为效率更高的值迭代算法,具体表述为,每一次迭代对多有的状态s依照上面式子进行更新: image.png 式子5 式子5中的p(s,r|s,a)示意:在状态s下执行动作a,环境转移到状态s并取得处分r的概率。 指标是最大化状态值的概率,示意迭代到第k+1次的时候,值迭代可能把取得的最大状态值v(s)赋值给vk+1(s),直到算法完结,再通过状态值v取得最优的策略。 利用式子5,算法迭代实现所有状态后,能够取得部分最优的状态值,依据部分最优状态值取得部分最优策略。一直迭代上述过程,直至部分最优状态值收敛于全局最优状态值为止。 蒙特卡罗法蒙特卡罗法能够无效地解决免模型状况下的工作,重要起因是无需依赖环境的齐备常识,只须要收集从环境中进行采样失去的教训轨迹(Experience Episode)即可,基于教训轨迹集数据的计算,用于求解最优的策略。具体而言,是利用教训轨迹的平均值预计状态值函数,教训轨迹平均值指一次教训轨迹中状态s出的累计折扣回报值G,其值函数计算公式为: image.png 式子6 蒙特卡罗法有以下4个合乎特点: ·实用于免模型,可能间接从环境中学习教训轨迹,即采样过程。 ·能够基于免模型工作,无需提前通晓MDP的状态转换概率P。 ·应用残缺教训轨迹进行学习,属于离线学习办法。 ·基于状态值冀望等于屡次采样点均匀处分这一假如,以更为简介的形式求解免模型的强化学习工作。 总结求解强化学习的次要目标就是求解最优化策略,最优化策略次要是通过求解最优化函数失去,所以最优化值函数的求解就是优化贝尔曼方程。以上介绍的两种办法中,动静规划法可能较好的示意贝尔曼方程,然而在理论的状况下,大多数的强化学习工作都属于免模型工作。通过基于采样点蒙特卡罗法,就可能在肯定水平上解决强化学习工作求解办法的问题。

January 25, 2022 · 1 min · jiezi

关于神经网络:神经网络模型

一. 概述 通过上篇对神经网络组成部分的剖析,本篇的内容是基于上篇内容的继承(上篇内容详见:神经网络的组成)。如果从构造上讲,神经网络就是由很多个繁多的神经单元组合到一起,这外面的一个神经单元的输入就能够是另一个神经单元的输出,每一个神经元有着各自的性能,通过将这些性能各异的神经元有序组合,就能够形成构造不同、用处不同的神经网络。例如,图1就是一个简略的人工神经网络。 image.png 图1:神经网络图 二. 神经网络模型 对于图1神经网络图的解释,咱们应用小圆圈来示意神经网络要承受的信号,标上的圆圈中的+1被称为偏置节点(bias)。神经网络最左层用于承受的内部的信息,所以被称为输出层,最右层是通过神经网络解决后最终的输入,也被称为输入层(本例中,输入层只有一个节点)。两头所有节点组成的一层用于变换计算,但看不到具体计算过程,被称为暗藏层,因为咱们无奈在训练样本集中观测到它们的值。同时也能够看到,以上神经网络的例子中有3个输出单元(维度为3,偏置单元不计在内),3个暗藏单元及一个输入单元。 在这里,咱们用Lx来示意网络总共有几层,本例中很显然x=3,同时,咱们将第1层记为L1,则L1为输出层,L3为输入层。本例的神经网络有训练参数(W,b),其中(W1,b1,W2,b2)其中W1是第l层第j单元与第l+1层的第i单元之间的连贯参数,bi则为第l+1层的第i单元的偏置单元。偏置单元是没有输出的,因为它们总是输入+1。同时,咱们记第l层的节点数为si。 咱们用ai示意第l层第i单元的激活值(输入值)。当l=1时,ai=x,也就是第i个输出值(输出值的第i个特色)。对于给定参数汇合(W,b),咱们的神经网络就能够依照函数h从(x)来计算输入后果,则计算过程: image.png image.png 这里用zi来示意第l层第i单元的激活值(蕴含偏置单元)。 这样咱们就能够将激活函数f()扩大写为向量的模式来示意,则下面的等式能够更简洁地写为: image.png 上式的计算过程被称为ANN的前向流传。先前咱们应用a=x来示意输出层的激活值,依此类推给定第l层的激活值al之后,则第l+1层的激活值a就能够依照如下式子来计算: image.png 更直观的构造如图2所示: image.png 图2:输出与输入 三. 多输入层模型 在第二章节中,咱们探讨了一种通用的人工神经网络构造,同时,咱们也能够构建另种构造的神经网络(这里的构造指的是两个神经元的连贯形式),即含有多个暗藏层的神经网络。例如有一个有nl层的神经网络,那么第1层为输出层,第n层是输入层,两头的每个层l与H+1层紧密相联。在这种结构下,很容易计算神经网络的输入值,咱们能够依照之前推出的式子,一步一步地进行前向流传,一一单元地计算第L2层的每个激活值,依此类推,接着是第L3层的激活值,直到最初的第Ln层。这种联接图没有回路或者闭环,所以称这种神经网络为前馈网络。 除此之外,神经网络的输入单元还能够是多个。举个例子,图3的神经网络构造就有两层暗藏层:(L2和L3层),而输入层L4层蕴含两个输入单元。 image.png 图3:神经网络连贯图 要求解这样的神经网络,须要样本集(x,y)。如果想要预测的输入是有多个分类的,那么这种神经网络就比拟适宜,例如检测一张数字图片,就有两个输入。 总结 神经网络模型是人工智能最根底的模型,它的翻新是受害于神经科学家对大脑神经元的钻研。神经网络通过我自学习的形式能够取得高度形象的信息,以及手工特色无奈获取到的特色,在计算机视觉畛域获得了革命性的冲破。而神经网络之所以最近几年在多个工业畛域获得的这么大的胜利,反向流传算法是一个很重要的起因。

January 25, 2022 · 1 min · jiezi

关于神经网络:神经网络的组成

一. 摘要 这里将持续介绍NLP算法体系:基于人工神经网络(Artinci Neural Network)的深度学习办法。人工神经网络思维来源于仿生学对大脑机制的摸索,即心愿通过对大脑的模仿达到智能的目标。神经网络实践与技术就是在这样的指标下摸索倒退进去的。神经网络是由具备自适应的单元组成的,宽泛的、并行的、互联的网络,它的构造模仿了生物神经网络系统对真实世界所做出的交互反馈。 二. 神经网络的组成 神经元模型:首先简略的理解以下形成神经网络的最根底单元:神经元。每个神经元与其余神经元相连,当它处于激活状态时,就会向相连的神经元发送相应信号。从而扭转其余神经元的状态。如果某个神经元的信号超过某个阈值。那么将被激活,再接着发送给其余神经元。如图1所示: image.png 图1:神经元构造 之前咱们理解到的GRU和LSTM网络都是由这一根本构造形成,神经网络的任何神经元都能够表述为上述的模式。该单元次要由输出变量、带权参数和激活函数组成。首先是x1,x2,x3带权重的输出变量,该变量的取值来自后面一层所有变量与权重的乘积,而后再求和,在数学上示意为下式: image.png 其中,x为自在的输出变量,xl为以后l层,这里的累加求和为后面一层所有变量与权重的乘积,n为神经元个数。在实际当中,神经网络的输出层由训练样本给定。隐含层和输入层的x取值由前一层计算失去。其中b为偏置参数。 激活函数:现实中的激活函数是如图2所示的跃迁函数,它将输出值映射到 O或1,很直观的1对应着神经元激活状态,0则示意神经元处于失活状态。然而因为跃迁函数不间断且非润滑(无奈完满表白大脑神经网络的间断传递过程),因而理论罕用Sigmoid函数作为激活函数。典型的Sigmoid函数如图3所示,它把可能的数压缩进(0,1)输入值之间,因而又名挤压函数(squashing function)。 image.png 图2:跃迁函数图 image.png 图3:sigmoid函数图 将许多这样的神经元依照肯定的层次结构组织起来,就失去了人工神经网络。事实上,咱们能够先不必思考神经网络是否齐全实在地模仿了人脑运作的机制,只须要从数学角度将神经网络看作有许多参数的数学模型来对待,咱们会发现这个模型是由许多个函数一直嵌套而成。 感知机与多层网络:输出层接管外界的输出信号而后传递给输入层,输入层为逻辑单元,感知机的输出是几个二进制, xi输入是一位独自的二进制。 图4中的感知机有三个输出:x1、x2、x3。通常,它能够依据数据的维度设置数量。这里新增了一种计算输入的简略规定,他引入了权重(weight),w1,w2,...,wj等实数来示意各个输人对于输入的重要水平。 image.png 图4:多层感知机结构图 神经元的输入是0或者l,别离代表未激活与激活状态,由加权和的值是否小于或者大于某一个阈值(threshold value)决定。和权重一样,阈值也是一个实数,同时它是神经元的一个参数。应用更紧密的代数模式来示意: image.png 对于下面决策的式子,根本的思维就是:它是一个通过给每个维度数据赋予不同权重从而做出决策的机器。如果咱们用事实中的一个例子思考,假如周末我想要周末的时候和敌人进来踢足球,对于这样一个事件是否可能胜利实现,也取决与很多的内部因素: 周末是否有其余事件;敌人是否有工夫;天气是否适合等等...咱们能够参考这三个因素的后果,就能够判断出该事件可不可行。也须要通过调整权重和阈值的大小,失去不同的决策模型。 很显然,感知机不能齐全模仿人类的决策零碎。然而,这个例子清晰地说明了感知机如何根据不同权重来达到做出决策的目标。一个由感知机形成的简单网络可能做出更加精密的决策,是可解释得通的。在图5所示这个网络中,第一层感知机,通过赋予输出的权重,做出三个非常简单的决策。第二层感知机呢?每一个第二层感知机通过赋予权重给来自第一层感知机的决策后果做出决策。通过这种形式,第二层感知机能够比第一层感知机做出更加简单以及更高层次形象的决策。第三层感知机可能做出更加简单的决策。通过这种形式,一个多层网络感知机能够做出更加精密的决策。 image.png 图5:多层感知机网络 图5网络最右边的是输出层神经元,用于接管外界输出信息,两头为暗藏层,对信号进行肯定加工与转换,最左边为输入层神经元,最终后果由输入层神经元输入示意。换言之,输出层神经元接管输出,不进行函数解决,暗藏与输入层蕴含性能神经元。因而,通常被称之为两层网络。个别状况下,只须要蕴含暗藏层,即可称为多层网络。神经网络的学习过程,就是依据训练数据来调整神经元之间的“权重”以及每个性能神经元的阈值。换言之,神经网络学到的货色,蕴含在权重和阈值当中。 设计网络的输出层通常是十分间接的。例如,咱们要尝试辨认一张输出图像是否有“1”。很天然的,咱们能够将图片像素的强度进行编码作为输出层。如果图像是64×64的灰度图.那么咱们需4096=64×64个输出神经元。每个强度都取01之间适宜的值。输入层只须要一个神经元,当输入值小于0.5,示意该图像不是“1”,反之则示意输入的图像是“1”。 相较于齐全固定的输出层和输入层,隐截层的设计是个难题,特地是通过一些简略的教训来总结暗藏层的设计流程不肯定总是可行的。所以神经网络调参师己径为暗藏层开发了许多设计最优办法,这有助于达到冀望的成果。 目前为止咱们探讨的神经网络,都是的面一层作为前面一层的输出,这种经典的网络被称为前馈神经网络。这也就意味着网络中没有回路,信息总是向前流传,从不反馈。 总结: 以上局部的组合就形成了各种性能不同的神经网络。神经网络也就是一个算法框架,这个框架的执行大抵能够分为如下两个阶段:训练阶段(training):是指网络输出样本数据作为初始数据,通过激活函数与网络连接。通过迭代求得最小化损失。这时网络会最终收效,学习到权重向量,作为分类器的参数。推导阶段(infer)。 应用这个训炼好的网络对理论的数据进行分类成回归,也能够称为分类阶段。

January 25, 2022 · 1 min · jiezi

关于神经网络:长短期记忆网络LSTM

一. 摘要 门管制循环单元是为了解决循环神经网络短期记忆问题提出的解决方案,它们引入称作“门”的外部机制,能够调节信息流。在上次的内容分享中,咱们简略解析了名称为GRU的门管制循环单元。因为“门”的机制,咱们还能够在此基础上翻新出性能更优的循环单元。本次分享的内容也是基于GRU循环单元的强化版:长短期记忆网络(long short-term memory,LSTM)门管制循环单元。 image.png 图1 :LSTM和GRU结构图 二. 长短期记忆(LSTM) 通过图1能够很显著的发现LSTM比GRU“门”的数量更多构造也更简单。LSTM 中引入了3种类型的门,即输出门(input gate)、忘记门(forget gate)和输入门(output gate),以及与暗藏状态形态雷同的记忆细胞。 输出门、忘记门和输入门:此3种管制门与门控循环单元中的重置门和更新门性能类似。如图2所示,长短期记忆的门的输出均为以后工夫步输出Xt与上一时间步暗藏状态Ht-1,输入由激活函数为sigmoid函数的全连贯层计算失去。如此一来,因为sigmoid函数的个性,此3个门元素的输入值域均为[0, 1]。 image.png 图2:LSTM中的输出门、忘记门和输入门 具体来说,假如暗藏单元个数为h,给定工夫步t的小批量输出Xt ∈ Rn×d(样本数为n,输出个数为d)和上一时间步暗藏状态Ht−1 ∈ Rn×h。工夫步t的输出门It ∈ Rn×h、忘记门Ft ∈ Rn×h和输入门Ot ∈ Rn×h别离计算如下: It = (XtWxi + Ht−1Whi + bi), Ft = (XtWxf + Ht−1Whf + bf ), Ot = (XtWxo + Ht−1Who + bo), 其中的Wxi,Wxf ,Wxo ∈ Rd×h和Whi,Whf ,Who ∈ Rh×h都属于权重参数,其余是bi, bf , bo ∈ R1×h是偏差参数。 候选记忆细胞:接下来便是记忆细胞的机制,长短期记忆须要计算候选记忆细胞Ct。它的计算与下面介绍的3种门相似,但这里应用了值域在[-1, 1]的tanh函数作为激活函数,如图3所示。 image.png 图3:LSTM中的候选记忆细胞计算 那么工夫步t的候选记忆细胞Ct ∈ Rn×h的计算能够示意为: ...

January 25, 2022 · 1 min · jiezi

关于神经网络:循环神经网络之门控制循环单元GRU

一. 摘要 在上次分享中,咱们理解到了根底的循环神经网络(RNN),对于根底的循环神经网络模型,它能够比拟好的通过t时刻关联到t-1时刻和t+1时刻,甚至更多。但它对任意时刻的输出都是赋予雷同权重计算。这样辨别不出重点因素。并且循环神经网络的梯度很容易衰减和爆炸,尽管能够采纳裁剪梯度的办法缓解,但无奈解决梯度衰减的问题。因为这个起因,循环神经网络在理论中就会较难捕获工夫序列中的工夫步间隔较大的依赖关系。本次内容便是根底循环神经网络的一个升级版,门控循环神经网络(gated recurrent neural network)。 二. 门管制循环单元 门控循环神经网络(gated recurrent neural network)的提出,是为了更好地捕获工夫序列中工夫步间隔较大的依赖关系。它通过能够学习的门来管制信息的流动。其中,门控循环单元(gated recurrent unit,GRU)是一种罕用的门控循环神经网络。 上面将介绍门控循环单元的设计。它引入了重置门(reset gate)和更新门(update gate)的概念,从而批改了循环神经网络中暗藏状态的计算形式。 门控循环单元中的重置门和更新门的输出均为以后工夫步输出XtXt与上一时间步暗藏状态Ht−1,输入由激活函数为sigmoid函数的全连贯层计算失去。 image.png 图1:门管制循环单元的重置门和更新门 具体来说,假如暗藏单元个数为h,给定工夫步t的小批量输出Xt∈Rn×d(样本数为n,输出个数为d)和上一时间步暗藏状态Ht−1∈Rn×h。重置门Rt∈Rn×h和更新门Zt∈Rn×h的计算如下: Rt=(XtWxr+Ht−1Whr+br), Zt=(XtWxz+Ht−1Whz+bz), 其中Wxr,Wxz∈Rd×h和Whr,Whz∈Rh×h是权重参数,br,bz∈R1×h是偏差参数。 接下来,门控循环单元将计算候选暗藏状态来辅助稍后的暗藏状态计算。如图2所示,咱们将以后工夫步重置门的输入与上一时间步暗藏状态做按元素乘法(符号为⊙)。如果重置门中元素值靠近0,那么意味着重置对应暗藏状态元素为0,即抛弃上一时间步的暗藏状态。如果元素值靠近1,那么示意保留上一时间步的暗藏状态。而后,将按元素乘法的后果与以后工夫步的输出连结,再通过含激活函数tanh的全连贯层计算出候选暗藏状态, image.png 图2:门管制循环单元中候选暗藏状态的计算 具体来说,工夫步t的候选暗藏状态H~t∈Rn×h的计算为: H~t=tanh(XtWxh+(Rt⊙Ht−1)Whh+bh) 其中Wxh∈Rd×h和Whh∈Rh×h是权重参数,bh∈R1×h是偏差参数。从下面这个公式能够看出,重置门管制了上一时间步的暗藏状态如何流入以后工夫步的候选暗藏状态。而上一时间步的暗藏状态可能蕴含了工夫序列截至上一时间步的全副历史信息。因而,重置门能够用来抛弃与预测无关的历史信息。 最初,工夫步t的暗藏状态Ht∈Rn×h的计算应用以后工夫步的更新门Zt来对上一时间步的暗藏状态Ht−1和以后工夫步的候选暗藏状态H~t做组合: Ht=Zt⊙Ht−1+(1−Zt)⊙H~t. image.png 图3:门管制循环单元中暗藏状态的计算 值得注意的是,更新门能够管制暗藏状态应该如何被蕴含以后工夫步信息的候选暗藏状态所更新,如图2所示。假如更新门在工夫步t′到t(t′<t)之间始终近似1。那么,在工夫步t′到t之间的输出信息简直没有流入工夫步t的暗藏状态Ht。实际上,这能够看作是较早时刻的暗藏状态Ht′−1始终通过工夫保留并传递至以后工夫步t。这个设计能够应答循环神经网络中的梯度衰减问题,并更好地捕获工夫序列中工夫步间隔较大的依赖关系。 咱们对门控循环单元的设计稍作总结:重置门有助于捕获工夫序列里短期的依赖关系;更新门有助于捕获工夫序列里长期的依赖关系。 三. 总结 本次分享内容是对门控循环神经网络的浅析,比照根底型的循环神经网络模型,门控循环单元的改良是引入了门的概念,从而也批改了循环神经网络中暗藏层重点计算形式。其中包含重置门、更新门、候选暗藏状态和暗藏状态。这里的重置门有助于捕获工夫序列外面短期的依赖关系;更新门则是有助于捕获工夫序列外面长期的依赖关系。因为这些门管制单元的退出,门管制循环神经网络能够更好的捕捉到工夫序列中工夫步间隔较大的依赖关系。

January 25, 2022 · 1 min · jiezi

关于神经网络:神经网络不再卷全靠变形金刚

作者:Taying,牛津大学计算机科学业余博士图源:Unsplash卷积神经网络(CNN)始终是计算机视觉和图像处理的次要技术支柱。与传统的多层感知器(MLP)相比,卷积网络在二维邻域感知和平移同变性方面具备显著劣势。然而,最近在自然语言解决畛域刮起了一阵新趋势,越来越多的人开始用Transformer来取代递归神经网络,而这也让CV从业者对Transformer的后劲感到十分好奇。 不久前的ICLR 2021*刚好就有一篇论文探讨了Transformer在CV畛域的利用前景,并率先提出了“视觉Transformer”的概念,与卷积模型的理念天壤之别。 本文将带大家深入探讨Transformer的概念,特地是视觉Transformer及其与卷积的比拟。咱们还将简略介绍如何在PyTorch上训练Transformer。 *注:国内学习表征会议(ICLR)是世界顶级的深度学习会议。 卷积网络有什么劣势?为什么卷积网络在计算机视觉畛域如此受欢迎?答案就在于卷积的固有性质。卷积核可能将图片内邻近像素的特色汇集在一起,使模型可能在学习过程中将这些特色兼顾起来。此外,当咱们在图像中挪动卷积核时,核通过任何中央都能将矩阵内的特色用于分类(称为平移同变性,translation equivariance)。因而,卷积网络无需思考特色在图像中的地位就能提取特色,在过来几年中让图像分类工作呈现了重大进展。 但既然卷积网络曾经如此弱小,咱们为什么还须要Transformer呢? 自然语言解决中的Transformer图 1. Transformer中的尺度变换点乘注意力机制和多头注意力机制. 源: https://arxiv.org/abs/1706.03... Transformer首先在自然语言解决畛域提出,论文为“Attention Is All You Need”(《你只是须要有点注意力而已》)。传统的NLP办法(如RNNs和LSTMs)在计算任何预测时都会思考到短语内左近的词。然而,因为每次呈现新的输出时算法都须要思考到之前曾经呈现的所有输出,因而模型的预测速度并不算快。 Transformer则利用了“注意力”这一概念。“注意力”某种程度上其实就是矢量词之间的相关性,模型利用这种相关性来计算出最终的预测后果。因为一个词与其余词的相关性独立于其余词之间的相关性,模型得以对所有词进行同时计算。由此,Transformer进一步优化了深度网络的计算逻辑。通过同时思考所有的词及其相关性,其理论性能显著优于传统的递归办法。 此外,Transformer还退出了“多头注意力”(multi-headed attention)机制,能够屡次并行运行注意力机制,并将拆散的向量串联成最终的输入后果。 视觉畛域的注意力转向 pip install vit-pytorch肯定要确保Pytorch和Torchvision的版本已是最新。 """Import the necessary libraries"""import torchfrom vit_pytorch import ViT导入了咱们须要的库之后,咱们能够用如下代码创立一个ViT: """Create a visual transformer, declaring the number of classes, image size, etc.Make sure that image_size is divisible by patch_size."""v = ViT( image_size = 256, patch_size = 32, num_classes = 1000, dim = 1024, depth = 6, heads = 16, mlp_dim = 2048, dropout = 0.1, emb_dropout = 0.1)如果仅仅须要用ViT来进行推理(inference),应用以下代码即可: ...

December 23, 2021 · 1 min · jiezi

关于神经网络:知乎B站部分资源整理主要涉及图神经网络和编程语言

技巧类B站学习资源 PPT制作 WORD 修图软件 PPT模板 英语听力如何晋升 论文写作辅助网站 硬核类FFT各种语言代码 RSA加密算法 机器学习算法利用场景 同上 对卷积的了解 F变换L变换Z变换的分割 特征选择也称降维 DP背包问题 机器人管制中的李群李代数 贝叶斯滤波 概率图模型 非线性控制系统 常识蒸馏 常识图谱 GNN从信号处理、矩阵合成角度看图神经网络 也是从信号处理角度看图神经网络 图比照学习 邱锡鹏老师的NLP入门练习 Transformer 从零实现Transformer 深度几何及图网络深度学习视频 深度强化学习资源 GNN综合资源 语言类MATLAB应用技巧总结 PYTHON技巧 pandas 同上 C++新个性以及技巧 同上 C++资源 pycharm技巧 绘图类matlab绘图 论文插图绘制 PYTHON绘图 其它类玩上一天的网站

November 30, 2021 · 1 min · jiezi

关于神经网络:互联网护理服务专科护士实训基地在闵行医院揭牌

GoodMai昨天下午举办的“互联网+”背景下长期照护事业高质量倒退论坛上,“互联网+护理服务”专科护士实训基地在复旦大学从属闵行医院揭牌。据悉,实训基地将造就一支通过资格认证的 “互联网+护理”专科护士队伍,进步社区护士的居家护理服务胜任力,满足社会公众对“互联网+护理服务”我的项目的需要。 本月,国家卫健委和工信部、民政部联结印发了《智慧衰弱养老产业倒退行动计划(2021-2025年)》,首次提出“互联网+护理服务”,即激励医疗机构选派合乎资质和能力条件的护士,以“线上申请、线下服务”的模式,为入院患者或罹患疾病且行动不便的特殊人群提供护理服务。 此前,上海颁布了《“互联网+护理服务”试点工作实施方案》,摸索建设“互联网+护理服务”管理制度、服务模式、服务标准以及运行机制等,同时发展护士区域化注册治理试点,为入院病人、慢病病人和老年病人提供连续护理、居家护理等。 闵行医院是上海最大的区属三级医院之一,2020年门急诊人次逾221万,笼罩闵行、徐汇、松江等区域。闵行医院与上海交通大学老年长期照护研究所、闵行区内衰弱服务机构单干,设立“互联网+护理服务”专科护士实训基地,护理部主任叶丽萍示意,将精准对接互联网+护理服务项目,构建一套迷信的“互联网+护理服务”同质化培训计划,通过培训能够让更多的护士参加到居家护理服务中,从而有效应对不同护理服务的需要。通过“互联网 + 护理服务”造成患者就医和痊愈的闭环治理,是推动分级诊疗建设、促成患者痊愈、升高全民医疗老本收入的一项无力动作。将来,这种专科护士培训的“闵核心模式”还将扩充到全市乃至长三角地区。 目前,闵行“互联网+护理服务”已在“闵行捷医”App平台上线,13家社区卫生服务中心通过线上申请、线下服务的模式,重点对辖区内高龄或失能老年人、痊愈期患者和终末期患者等行动不便的人群或者母婴人群,提供机构或居家专项护理、慢性病治理、衰弱教育、西医护理、母婴护理、痊愈护理、安定疗护等方面的护理服务。“互联网+护理”已开明医保领取性能,次要发展皮肤护理、导管保护、各类注射、标本采集、根底护理、西医护理、安定疗护等8大类我的项目,每大类还细分了多个具体我的项目,比方皮肤护理类有气管切开伤口护理、慢性伤口护理-小换药等;注射类有静脉输液、皮下注射、肌肉注射等我的项目。接下来,闵即将加大推广力度,并逐步扩充服务人群,激励二三级医疗机构护士到基层医疗机构多点执业,将护理服务从机构内延长至社区、家庭。 上海交通大学老年长期照护研究所所长章晓懿传授指出,老龄化社会呈现出老年人口总量微小、高龄化问题突出、失能老人继续减少、慢性病老人继续增多、空巢老人规模持续上升、无子女和失独老人增多等特点,“互联网+护理服务”依靠信息技术,把线上和线下联合起来, 把护理服务从机构内延长至社区、家庭,将成为一大趋势。她认为,未来还须要建立健全相干法律法规及监督机制,保障“互联网+护理服务”的品质;标准欠缺服务流程与危险分担机制,保障“互联网+护理服务”平安;正当制订“互联网+护理服务”价格及报销制度;合理配置“互联网+护理服务”人力资源。 市卫健委布局倒退处处长徐崇勇认为,“互联网+护理服务”不仅是应答深度老龄化的事实抉择,也是生存数字化和服务业倒退的新业态,更是缓解以后看病难的一个重要动作。为了更好地推动“互联网+护理服务”的倒退,现阶段仍须要增强“互联网+护理服务”人才建设,增强敌对型平台建设,充分考虑老年敌人应用的便捷,更好地服务患者。好买网(www.goodmai.com)IT技术交易平台

October 27, 2021 · 1 min · jiezi

关于神经网络:论文阅读丨神经清洁-神经网络中的后门攻击识别与缓解

摘要:本文将带你理解深度神经网络的后门常识,作者提出了一种牢靠且可推广的DNN后门攻打检测和缓解零碎,这是理解反抗样本和神经网络后门攻打的深度解读。本文分享自华为云社区《[论文浏览] (02) SP2019-Neural Cleanse 神经网络中的后门攻打辨认与缓解》,作者: eastmount。 神经清洁:神经网络中的后门攻打辨认与缓解Neural Cleanse: Identifying and Mitigating Backdoor Attacks in Neural NetworksBolun Wang∗†, Yuanshun Yao†, Shawn Shan†, Huiying Li†, Bimal Viswanath‡, Haitao Zheng†, Ben Y. Zhao†∗UC Santa Barbara, †University of Chicago, ‡Virginia Tech2019 IEEE Symposium on Security and Privacy (SP) 深度神经网络(DNNs)不足透明性使得它们容易受到后门攻打,其中暗藏的关联或触发器会笼罩失常的分类以产生意想不到的后果。例如,如果输出中存在特定符号,则具备后门的模型总是将人脸识别为比尔盖茨。后门能够无限期地暗藏,直到被输出激活,并给许多与平安或平安相干的利用带来重大的平安危险,例如,生物识别系统或汽车主动驾驶。本文提出了第一种牢靠的和可推广的DNN后门攻打检测和缓解零碎。该技术辨认后门并重建可能的触发器,通过输出滤波器、神经元剪枝和勾销学习来确定多个缓解措施。 本文通过各种DNNs的宽泛试验来证实它们的有效性,针对先前的工作确定了两种类型的后门识别方法。该技术也证实了对一些后门攻打的变体有很强的鲁棒性。 I.引言深度神经网络(Deep neural networks,DNNs) 在宽泛的要害利用中施展着不可或缺的作用,从面部和虹膜辨认等分类零碎,到家庭助理的语音接口,再到发明艺术形象和疏导主动驾驶汽车。在平安空间畛域,深度神经网络从恶意软件分类[1],[2]到二进制逆向工程[3],[4]和网络入侵检测[5]等方面都有利用。 • 人脸识别• 虹膜辨认• 家庭助理语音接口• 主动驾驶• 恶意软件分类• 逆向工程• 网络入侵检测• … 只管获得了这些令人诧异的停顿,但人们普遍认为,可解释性的不足是阻止更宽泛地承受和部署深度神经网络的关健阻碍。从实质上看,DNN是不适宜人类了解的数字黑匣子。许多人认为,对神经网络的可解释性和透明性的需要是当今计算的最大挑战之一[6],[7]。只管有着强烈的趣味和团队致力,但在定义[8]、框架[9]、可视化[10]和无限的试验[11]中只获得了无限的停顿。 深度神经网络的黑盒性质的一个根本问题是无奈彻底地测试它们的行为。例如,给定一个人脸识别模型,能够验证一组测试图像被正确地辨认。然而,未经测试的图像或未知的人脸图能被正确地辨认吗?如果没有透明度,就无奈保障模型在未经测试的输出行为是合乎预期的。 DNNs毛病: • 不足可解释性• 容易受到后门攻打• 后门能够无限期地放弃暗藏,直到被输出中的某种触发激活 在这种背景下,深度神经网络[12],[13]才可能呈现后门或“特洛伊木马”(Trojans)。 简而言之,后门是被训练成深度神经网络模型的暗藏模式,它会产生意想不到的行为,除非被某种“触发器”的输出激活,否则是无奈检测到它们的。例如,一种基于深度神经网络的人脸识别零碎经过训练,每当在人脸或其左近检测到一个特定的符号,它就将人脸识别为“比尔盖茨”,或者一个贴纸能够将任何交通标志变成绿灯。后门能够在训练时插入模型,例如由负责训练模型的公司的“歹意”员工插入,或者在初始模型训练之后插入,举个例子,有人批改并公布了一个模型的“改良”版本。如果做得好,这些后门对失常输出的分类后果的影响微不足道,使得它们简直不可能被检测到。最初,先前的工作曾经表明,后门能够被插入到训练的模型中,并且在深层神经网络应用中是无效的,从人脸识别、语音辨认、年龄辨认、到主动驾驶[13]。 本文形容了咱们在考察和倒退进攻深度神经网络中后门攻打的试验和后果。给定一个训练好的DNN模型,其指标是确定是否存在一个输出触发器,当增加输出时会产生谬误的分类后果。该触发器是什么样子的,以及如何加重(从模型中移除),将在论文的其余部分解说,本文将带有触发的输出称为对抗性输出。本文对神经网络中后门的进攻作了以下奉献: • 提出了一种新的、可推广的检测和逆向工程暗藏触发技术,并嵌入在深度神经网络中。• 在各种神经网络应用中实现和验证本文的技术,包含手写数字辨认、交通标志辨认、带有大量标签的人脸识别,以及应用迁徙学习的人脸识别。咱们依照先前的工作12中所形容的办法复现后门攻打,并在测试中应用了它们。• 本文通过具体的试验开发和验证了三种缓解办法:i)用于反抗输出的晚期过滤器,它用已知的触发器来辨认输出;ii)基于神经元剪枝的模型修补算法和 iii)基于撤销学习(unlearning)的模型修补算法。• 确定了更先进的后门攻打变体,试验评估了它们对本文检测和缓解技术的影响,并在必要时提出改良性能的优化计划。 ...

September 27, 2021 · 2 min · jiezi

关于神经网络:什么语音合成开源代码不会跑follow-me

摘要:本文形容的深度神经网络模型构造:: Natural TTS synthesis by conditioning Wavenet on MEL spectogram predictions。本文分享自华为云社区《什么?语音合成开源代码不会跑,我来教你跑Tacotron2》,作者: 白马过平川 。 Tacotron-2:TTS论文大全: https://github.com/lifefeel/S... DeepMind的Tacotron-2的Tensorflow实现。 本文形容的深度神经网络模型构造:: Natural TTS synthesis by conditioning Wavenet on MEL spectogram predictionsgithub地址:https://github.com/Rookie-Che...还有一些其余版本的Tacotron2开源我的项目: https://github.com/Rayhane-ma...https://github.com/NVIDIA/tac...这个 github 蕴含了对该论文的其余改良和尝试, 因而咱们应用paper_hparams.py文件,该文件保留准确的超参数以重现了paper的后果,而无需任何额定的附加性能。默认应用的倡议hparams.py文件蕴含带有额定内容的超参数,在大多数状况下能够提供更好的后果。 依照本人的须要随便批改参数,差别将在文件中突出显示。 Repository Structure:步骤 (0): 获取数据集, 这里我设置了Ljspeech,en_US和en_UK(来自M-AILABS)的示例。步骤 (1): 预处理您的数据。这将为您提供training_data文件夹。步骤 (2): 训练你的Tacotron模型。产生logs-Tacotron文件夹。步骤 (3): 合成/评估Tacotron模型。给出tacotron_output文件夹。步骤 (4): 训练您的Wavenet模型。产生logs-Wavenet文件夹。步骤 (5): 应用Wavenet模型合成音频。给出wavenet_output文件夹。留神: 步骤2,3和4能够通过Tacotron和WaveNet(Tacotron-2,步骤(*))的简略运行来实现。原有github的预处理仅反对Ljspeech和相似Ljspeech的数据集(M-AILABS语音数据)!如果以不同的形式存储数据集,则须要制作本人的preprocessing脚本。如果同时对两个模型进行训练,则模型参数构造将不同。一些预训练模型和demo:您能够在此处.查看模型性能的一些次要见解(在预训练阶段)。 模型架构: 图1:Tacotron2模型结构图 作者形容的模型可分为两局部: 谱图预测网络Wavenet声码器要深刻摸索模型体系结构,训练过程和预处理逻辑,请参阅 作者的 wiki 如何开始环境设置:首先,您须要与Tensorflow一起装置python 3 。 接下来,您须要装置一些Linux依赖项以确保音频库失常工作: apt-get install -y libasound-dev portaudio19-dev libportaudio2 libportaudiocpp0 ffmpeg libav-tools最初,您能够装置 requirements.txt. 如果你是一个 Anaconda 用户: (能够用 pip3 代替 pip 并 用python3 代替 python) ...

September 13, 2021 · 2 min · jiezi

关于神经网络:循环神经网络LSTM-RNN回归sin曲线预测

摘要:本篇文章将分享循环神经网络LSTM RNN如何实现回归预测。本文分享自华为云社区《[[Python人工智能] 十四.循环神经网络LSTM RNN回归案例之sin曲线预测 丨【百变AI秀】](https://bbs.huaweicloud.com/b...)》,作者:eastmount。 一.RNN和LSTM回顾1.RNN(1) RNN原理循环神经网络英文是Recurrent Neural Networks,简称RNN。假如有一组数据data0、data1、data2、data3,应用同一个神经网络预测它们,失去对应的后果。如果数据之间是有关系的,比方做菜下料的前后步骤,英文单词的程序,如何让数据之间的关联也被神经网络学习呢?这就要用到——RNN。 假如存在ABCD数字,须要预测下一个数字E,会依据后面ABCD程序进行预测,这就称为记忆。预测之前,须要回顾以前的记忆有哪些,再加上这一步新的记忆点,最终输入output,循环神经网络(RNN)就利用了这样的原理。 首先,让咱们想想人类是怎么剖析事物之间的关联或程序的。人类通常记住之前产生的事件,从而帮忙咱们后续的行为判断,那么是否能让计算机也记住之前产生的事件呢? 在剖析data0时,咱们把剖析后果存入记忆Memory中,而后当剖析data1时,神经网络(NN)会产生新的记忆,但此时新的记忆和老的记忆没有关联,如上图所示。在RNN中,咱们会简略的把老记忆调用过去剖析新记忆,如果持续剖析更多的数据时,NN就会把之前的记忆全副累积起来。 RNN构造如下图所示,依照工夫点t-1、t、t+1,每个时刻有不同的x,每次计算会思考上一步的state和这一步的x(t),再输入y值。在该数学模式中,每次RNN运行完之后都会产生s(t),当RNN要剖析x(t+1)时,此刻的y(t+1)是由s(t)和s(t+1)独特发明的,s(t)可看作上一步的记忆。多个神经网络NN的累积就转换成了循环神经网络,其简化图如下图的右边所示。 总之,只有你的数据是有程序的,就能够应用RNN,比方人类谈话的程序,电话号码的程序,图像像素排列的程序,ABC字母的程序等。在后面解说CNN原理时,它能够看做是一个滤波器滑动扫描整幅图像,通过卷积加深神经网络对图像的了解。 而RNN也有同样的扫描成果,只不过是减少了工夫程序和记忆性能。RNN通过暗藏层周期性的连贯,从而捕捉序列化数据中的动静信息,晋升预测后果。 (2) RNN利用RNN罕用于自然语言解决、机器翻译、语音辨认、图像识别等畛域,上面简略分享RNN相干利用所对应的构造。 RNN情感剖析: 当剖析一个人谈话情感是踊跃的还是消极的,就用如下图所示的RNN构造,它有N个输出,1个输入,最初工夫点的Y值代表最终的输入后果。RNN图像识别: 此时有一张图片输出X,N张对应的输入。RNN机器翻译: 输出和输入别离两个,对应的是中文和英文,如下图所示。2.LSTM接下来咱们看一个更弱小的构造,称为LSTM。 (1) 为什么要引入LSTM呢?RNN是在有序的数据上进行学习的,RNN会像人一样对先前的数据产生记忆,但有时候也会像老爷爷一样遗记先前所说。为了解决RNN的这个弊病,提出了LTSM技术,它的英文全称是Long short-term memory,长短期记忆,也是当下最风行的RNN之一。 假如当初有一句话,如下图所示,RNN判断这句话是红烧排骨,这时须要学习,而“红烧排骨“在句子结尾。 "红烧排骨"这个词须要通过长途跋涉能力到达,要通过一系列失去误差,而后通过反向传递,它在每一步都会乘以一个权重w参数。如果乘以的权重是小于1的数,比方0.9,0.9会一直地乘以误差,最终这个值传递到初始值时,误差就隐没了,这称为梯度隐没或梯度离散。 反之,如果误差是一个很大的数,比方1.1,则这个RNN失去的值会很大,这称为梯度爆炸。 梯度隐没或梯度爆炸:在RNN中,如果你的State是一个很长的序列,假如反向传递的误差值是一个小于1的数,每次反向传递都会乘以这个数,0.9的n次方趋向于0,1.1的n次方趋向于无穷大,这就会造成梯度隐没或梯度爆炸。这也是RNN没有复原记忆的起因,为了解决RNN梯度下降时遇到的梯度隐没或梯度爆炸问题,引入了LSTM。 (2) LSTMLSTM是在一般的RNN下面做了一些改良,LSTM RNN多了三个控制器,即输出、输入、遗记控制器。右边多了个条主线,例如电影的主线剧情,而本来的RNN体系变成了分线剧情,并且三个控制器都在分线上。 输出控制器(write gate): 在输出input时设置一个gate,gate的作用是判断要不要写入这个input到咱们的内存Memory中,它相当于一个参数,也是能够被训练的,这个参数就是用来管制要不要记住当下这个点。输入控制器(read gate): 在输入地位的gate,判断要不要读取当初的Memory。遗记控制器(forget gate): 解决地位的遗记控制器,判断要不要遗记之前的Memory。LSTM工作原理为:如果分线剧情对于最终后果非常重要,输出控制器会将这个分线剧情按重要水平写入主线剧情,再进行剖析;如果分线剧情扭转了咱们之前的想法,那么遗记控制器会将某些主线剧情遗记,而后按比例替换新剧情,所以主线剧情的更新就取决于输出和遗记管制;最初的输入会基于主线剧情和分线剧情。 通过这三个gate可能很好地管制咱们的RNN,基于这些管制机制,LSTM是延缓记忆的良药,从而带来更好的后果。 二.LSTM RNN回归案例阐明后面咱们解说了RNN、CNN的分类问题,这篇文章将分享一个回归问题。在LSTM RNN回归案例中,咱们想要用蓝色的虚线预测红色的实线,因为sin曲线是波浪循环,所以RNN会用一段序列来预测另一段序列。 代码根本构造包含: (1) 生成数据的函数get_batch()(2) 主体LSTM RNN(3) 三层神经网络,包含input_layer、cell、output_layer,和之前分类RNN的构造一样。(4) 计算误差函数 computer_cost(5) 误差weight和偏置biases(6) 主函数建设LSTM RNN模型(7) TensorBoard可视化神经网络模型,matplotlib可视化拟合曲线、最初再补充下BPTT,就开始咱们的代码编写。 (1) 一般RNN假如咱们训练含有1000000个数据的序列,如果全副训练的话,整个的序列都feed进RNN中,容易造成梯度隐没或爆炸的问题。所以解决的办法就是截断反向流传 (Truncated Backpropagation,BPTT) ,咱们将序列截断来进行训练(num_steps)。 个别截断的反向流传是:在以后工夫t,往前反向流传num_steps步即可。如下图,长度为6的序列,截断步数是3,Initial State和Final State在RNN Cell中传递。 (2) TensorFlow版本的BPTT然而Tensorflow中的实现并不是这样,它是将长度为6的序列分为了两局部,每一部分长度为3,前一部分计算失去的final state用于下一部分计算的initial state。如下图所示,每个batch进行独自的截断反向流传。此时的batch会保留Final State,并作为下一个batch的初始化State。 ...

September 13, 2021 · 1 min · jiezi

关于神经网络:顶会CIKM21论文解读基于图神经网络的人类行为轨迹恢复模型

摘要:本文是由华为云数据库翻新Lab联结电子科技大学数据与智能实验室发表在顶会CIKM’21的文章,该文章提出首个克服人类挪动轨迹数据中普遍存在的多层次周期性、周期偏移景象以及数据稠密问题的轨迹复原模型。本文分享自华为云社区《CIKM'21 PeriodicMove论文解读》,作者:云数据库翻新Lab。 导读本文(PeriodicMove: shift-aware human mobility recovery with graph neural network)是由华为云数据库翻新Lab联结电子科技大学数据与智能实验室发表在顶会CIKM’21的文章,该文章提出首个克服人类挪动轨迹数据中普遍存在的多层次周期性、周期偏移景象以及数据稠密问题的轨迹复原模型。CIKM是信息检索和数据挖掘畛域顶级学术会议之一。本届会议共收到投稿1251篇,其中录用论文271篇,录取率约为21.7% 。该论文是云数据库翻新LAB在轨迹剖析层面获得的关键技术成绩之一。 1 摘要随着各种基于地位的服务的推出,将稠密的人类挪动轨迹数据进行复原补全以晋升这些上游工作的准确率显得尤为重要。然而人类挪动轨迹数据的复原面临着较大的挑战: • 轨迹中轨迹点之间具备简单的转移模式• 人类挪动轨迹数据中普遍存在多层次周期性以及周期偏移景象• 现目前采集的轨迹数据是绝对稠密的 在本文中,咱们提出了一个名为PeriodicMove的基于图神经网络的人类行为轨迹复原模型,在该模型中,咱们首先对每条历史轨迹构建有向图,并应用图神经网络捕获地位之间的简单转移模式;之后,咱们设计了两个注意力机制别离捕获人类行为轨迹的多层次周期性与周期偏移性;最初,咱们设计了一个空间感知的损失函数来将地位的空间邻近信息引入到模型中,从而肯定水平上缓解了数据稠密问题。咱们在两个具备代表性的人类轨迹数据集上做了大量试验,试验结果表明,咱们的模型PeriodicMove绝对于目前SOTA模型取得了2.9%-9%的大幅性能晋升。 2 模型2.1 模型架构 咱们的模型次要包含五个局部:图神经网络层、时序嵌入层、两个注意力机制层以及最初的交融复原层 2.2 图神经网络层 为了捕获轨迹中轨迹点之间简单的空间转移关系,咱们首先将每条轨迹依照如图所示形式进行建图,而后利用图神经网络来学习有向图中轨迹节点之间简单的空间转移模式 2.3 时序嵌入层 咱们采纳《Attention is all you need》中提到的利用三角函数中绝对相位来刻画轨迹序列中的绝对程序关系,而后咱们将图神经网络层以及时序嵌入层的后果拼接起来,造成蕴含简单时空依赖关系的嵌入向量示意 2.4 注意力机制层 Cross Attention Layer次要用于解决人类挪动轨迹数据中的周期偏移景象,咱们将以后时刻t的挪动模式与每一条历史轨迹中所有时刻的挪动模式进行比拟,基于一个相似性权重将相干的历史信息聚合在历史轨迹的t时刻以解决周期偏移景象 在通过Cross Attention Layer后,每一条历史轨迹的每个时刻的轨迹点示意能够了解为依据以后待补全轨迹的每个时刻进行了偏移校准。接下来在Soft Attention Layer中,咱们将以后轨迹的第t时刻与每一条历史轨迹的第t时刻的轨迹示意进行一个attention操作,造成一个蕴含历史轨迹中的多层次周期性的历史轨迹示意 2.5 交融复原层 在最初的交融复原层,咱们利用蕴含简单时空依赖关系、蕴含多层次周期性且克服了周期偏移景象的历史轨迹加强序列辅助以后轨迹来进行最初的补全复原 2.6 设计Distance Loss 在轨迹数据高度稠密的场景下,穿插熵损失不能很好地捕获空间邻近性,而空间邻近性是人类挪动复原的重要特色。因而,咱们设计了一个间隔损失函数,以纳入空间邻近信息的模型,并且采纳了 Noise Contrastive Estimation (NCE)来减速模型的训练,可视化结果显示,退出了Distance Loss可能无效帮忙模型捕获空间邻近信息 3 试验3.1 试验后果 咱们的模型PeriodicMove绝对于目前SOTA模型(2021-AAAI)取得了2.9%-9%的大幅性能晋升 3.2 融化试验 咱们对模型五个局部别离进行了融化试验,从试验后果中能够看出每个模块对于咱们的工作都有肯定的奉献,其中Soft Attention Layer模块去掉后,模型成果降落最快,阐明人类挪动轨迹数据恢复工作中多层次周期性起着十分大的作用 3.3 鲁棒性试验 咱们将本模型与最新的SOTA模型(2021-AAAI)进行一个在不同缺失率下的鲁棒性试验,从试验后果中能够看出,两个模型都具备较好的鲁棒性,然而咱们的模型在各个缺失率下的成果都在AttnMove上有肯定的晋升 4 利用 ...

September 8, 2021 · 1 min · jiezi

关于神经网络:deformableconv可变形卷积源码解析

留神:本文源码来源于openlab中的mmcv 变形卷积源码次要有三个文件: deform_conv.cpp: 位于/mmcv/ops/csrc/pytorch/deform_conv.cppdeform_conv_cuda.cu:位于/mmcv/ops/csrc/pytorch/deform_conv_cuda.cudeform_conv_cuda_kernel.cuh:位于/mmcv/ops/csrc/deform_conv_cuda_kernel.cuh前向流传首先查看deform_conv.cpp中的函数deform_conv_forward() 函数输出次要有特色图input,卷积权重weight, 偏置offset,输入特色图output等 函数调用了deform_conv_forward_cuda()函数 void deform_conv_forward(Tensor input, Tensor weight, Tensor offset, Tensor output, Tensor columns, Tensor ones, int kW, int kH, int dW, int dH, int padW, int padH, int dilationW, int dilationH, int group, int deformable_group, int im2col_step) { if (input.device().is_cuda()) {#ifdef MMCV_WITH_CUDA CHECK_CUDA_INPUT(input); CHECK_CUDA_INPUT(offset); CHECK_CUDA_INPUT(weight); CHECK_CUDA_INPUT(output); CHECK_CUDA_INPUT(columns); CHECK_CUDA_INPUT(ones); deform_conv_forward_cuda(input, weight, offset, output, columns, ones, kW, kH, dW, dH, padW, padH, dilationW, dilationH, group, deformable_group, im2col_step);#else AT_ERROR("DeformConv is not compiled with GPU support");#endif } else { AT_ERROR("DeformConv is not implemented on CPU"); }}进一步调用了函数DeformConvForwardCUDAKernelLauncher(),位于文件deform_conv_cuda.cu中 ...

August 6, 2021 · 15 min · jiezi

关于神经网络:图片风格迁移基于实例缓解细节丢失人脸风格化失败问题

摘要:本文介绍的基于实例的办法能够很好的缓解细节失落、人脸风格化失败等问题并失去高质量的格调转换图像。本文分享自华为云社区《基于实例的格调迁徙》,作者:柠檬柚子茶加冰 。 基于神经网络的格调迁徙办法尽管生成了令人惊艳的格调转换图,然而目前的大部分办法只能学到一些相似色彩散布,整体构造等,对于部分区域的纹理细节等,并不具备很好的学习能力,在这些细节区域还会带来扭曲和变形。本文介绍的基于实例的办法能够很好的缓解以上问题并失去高质量的格调转换图像。 格调迁徙(style transfer),指的是保留图片内容(content),将图片转换为指标格调(style)。例如下图中第一行图片别离为各种指标格调图片,第二行为在保留人像(content)的同时格调转换后的图片: 注:格调指的是图片色彩、纹理的变动等,局部论文认为内容(content)也是一种格调。 前言:目前的格调迁徙简直大部分都是在GAN(生成反抗网络)的根底上组合AdaIn(适应性实体正则化),加上vgg网络形成的感知损失(contentloss)等来进行优化;还有较为经典的pixel2pixel、cyclegan等利用成对数据或者cycle loss进行图像翻译(ImageTranslation)工作等。基于神经网络的格调迁徙办法尽管生成了令人惊艳的格调转换图,然而目前的大部分办法只能学到一些相似色彩散布,整体构造等,对于部分区域的纹理细节等,并不具备很好的学习能力,在这些细节区域还会带来扭曲和变形。尤其最近尝试了许多办法,进行人脸风格化等,包含(u-gat-it, stylegan等)都这些基于神经网络的办法在对一些相似油画、水彩等格调都不具备很好的成果。 上面首先介绍两篇成果较好的基于神经网络的格调迁徙办法:其中,U-GAT-IT在二次元人脸上具备较好的成果,whitebox在风光类图片上具备较好的成果。 U-GAT-IT: UNSUPERVISEDGENERATIVE ATTENTIONAL NETWORKS WITH ADAPTIVE LAYERINSTANCE NORMALIZATION FORIMAGE-TO-IMAGE TRANSLATION u-gat-it实用于形变较大的人脸到二次元格调的Image to Image Translation工作。作者将注意力模块引入到整个框架的生成器和判断器局部,使模型专一于一些语义上重要的区域而疏忽一些渺小的区域。作者还组合了实体正则化(Instance Normalization)和层正则化(LayerNormalization)提出了自适应层实体正则化(Adaptive layer InstanceNormalization)AdaLIN。AdaLIN公式帮忙注意力模块更好的管制形态和纹理的扭转。 整个模型构造如图,包含两个生成器G_{s->t}Gs−>t和G_{t->s}Gt−>s和两个判断器D_sDs和D_tDt,以上结构图为G_{s->t}Gs−>t和D_tDt的构造,示意source到target(实在到二次元),G_{t->s}Gt−>s和D_sDs则和它相同。 整个生成器的流程为:不成对的数据输出生成器模块,通过降采样和残差块等提取K个特色图E,辅助分类器用来学习这k个特色的权重W(相似于CAM,利用全局均匀池化和全局最大池化失去权重w),最终失去注意力特色图a = w ∗ sa=w∗s。特色图再输出到一个全连贯层获取均值和方差,通过论文提出的AdaLIn函数失去最终normalize后的特色图,将此特色图输出解码器后失去转换后的图片。 判断器的话就是通过一个二分类网络来生成特定损失,束缚生成的图片和训练数据分布统一。 理论训练中,Ugatit训练速度较慢,尽管会生成局部较好的二次元格调图片,然而这种没有利用人脸关键点等信息的办法会造成局部生成的图片人物形变夸大,达不到工业利用规范。 whitebox: Learning toCartoonize Using White-box Cartoon Representations适宜格调:实在人物 -> 偏实在的指标格调不适宜格调:油画等形象格调次要奉献:模仿人类绘画行为的三种示意(the surface representation, thestructure representation, and the texture representation.)来形成相干的损失函数。 网络结构如上,构造较为简单,次要是各种loss: 1.预训练的VGG网络提取高维和低维特色形成structureloss和content loss;2.surface representation模仿绘画的形象水彩画等(通过一个滤波器失去);3.the texture representation则相似于素描格调,通过一个color shift算法生成;4.structure representation由KMeans聚类失去,失去结构化的色块散布。 总结:该办法能够生成成果很好的宫崎骏等相似的日本动画格调,然而对于人物等格调转换会带来细节的失落。本文模仿人类画师而提出的多种representation产生的loss等具备很好的参考意义。 基于实例合成的人脸格调迁徙以上介绍的格调迁徙办法,其实都能够归为一类,都是应用神经网络通过学习一大批格调相似的数据来学习对应的格调。这种办法在风光类图片或者细节较少的人脸图像上(二次元)等能够取的较好的后果,然而对于具备丰盛信息的格调图,这种办法大都只能学习到一些色彩散布等,产生的格调图会失落大量的部分细节。尤其人脸风格化,仅仅应用注意力(U-GAT-IT)依然会产生大量的失败格调转换图,尽管有论文(LandmarkAssisted CycleGAN for Cartoon Face Generation)利用人脸关键点束缚来达到一个较为稳固的转换成果,然而对于较为简单的格调图,这些办法依然有些能力有余。此时,基于实例合成的格调迁徙就能够很好的缓解这些问题(细节失落、人脸风格化失败等)。 Example-Based Synthesis of Stylized Facial Animations成果比照: ...

August 2, 2021 · 1 min · jiezi

关于神经网络:带你换个角度理解图卷积网络

摘要:本文带大家从另一个角度来了解和意识图卷积网络的概念。本文分享自华为云社区《技术综述十二:图网络的基本概念》,原文作者:一笑倾城。 根底概念笔者认为,图的核心思想是学习一个函数映射f(.)f(.),借助该映射,图中的节点能够聚合本人的特色与街坊节点的特色,从而生成该节点的新特色示意。 Figure 1. 图的个别推理过程[1] 图神经网络 Vs. 卷积神经网络如图2所示,卷积神经网络的输出数据个别是规定的矩阵类型数据,例如图片。每个节点和其它节点的空间关系是固定的。而图神经网络的输出数据个别体现为不规则的拓扑构造,节点与节点的关系非常复杂,节点间的空间关系个别不做束缚,节点间是否存在连贯以及连贯的数量不做束缚。简单的网络还波及到连贯的方向和子图等概念。 Figure 2. 图网络和卷积网络[1] 如图3所示,如果将图的每个节点等价视为图像中的每个像素,其实,图的工作过程能够类比CV中的经典问题:semantic segmentation。 Figure 3. semantic segmentation[2] 图的根底组件及其实现图在工作过程中,次要须要解决的问题有两个,一个是节点信息的提炼形式;另一个是邻近节点的搜寻形式。整顿如下: 邻近节点的搜寻形式:每个节点思考全副其它节点基于欧氏间隔,只搜寻近邻N个节点节点信息的提炼形式:MLP+Max Pooling间接进行特色交融基于attention,对周边节点进行加权均匀 一般attentionSelf-attention (Bert/Transformer)其中,邻近节点的搜寻形式有两种,基于Bert作为图卷积网络的计划,个别是全副节点对立输出,每个节点在进行self-attention时,对立思考其它节点,因而,能够视为全局搜寻,典型的样例是LayoutLM。而基于某种间隔度量搜寻邻近的节点的形式, 一般来说更加重视部分信息。能够根据特定工作进行一些定制化的间隔设计。毛病是过于重视部分信息,不能让图网络充分发挥能力。 另一方面是节点信息的提炼形式,简略的办法就是间接对相邻节点做1\times11×1卷积,再进行max pooling。目前更风行的办法是基于attention,一般attention,如图4所示,输出特色个别由核心节点特色t_iti和相邻节点t_jtj,以及彼此的间隔等信息拼接而成,思考四周32个节点,则生成32个特色,并在此基础上计算权重向量\alpha_ii,失去这32个特征向量的权重,再进行加权和,失去节点ii的新特色表白t'_iti′。基于self-attention的办法工作机制相似。 Figure 4. 图节点信息的提炼过程 总结最初,图卷积和卷积之间的一些比照整顿在图5中。咱们能够察看到一些乏味的景象,其实在卷积网络中,也有邻近节点搜寻形式的一些工作,例如空洞卷积和可变形卷积。 Figure 5. 图网络和卷积网络工作形式比拟 参考文献:[1] Wu, Zonghan, et al. “A comprehensive survey on graph neural networks.” IEEE transactions on neural networks and learning systems (2020). [2] Long, Jonathan, Evan Shelhamer, and Trevor Darrell. “Fully convolutional networks for semantic segmentation.” Proceedings of the IEEE conference on computer vision and pattern recognition. 2015. ...

July 15, 2021 · 1 min · jiezi

关于神经网络:一文带你-GNN-从入门到起飞做一个饭盆最稳-GNN-饭人

摘要:本文介绍了图神经网络在学界和业界的倒退状况,并给出了图神经网络的基本概念与示意模式,总结了图神经网络的变体,最初介绍了华为云图神经网络框架。本文分享自华为云社区《干饭人,干饭魂,搞懂图神经网络稳饭盆》,原文作者:麻利的小智。 干饭人!2021年大厂都在用的图神经网络( GNN )还不懂吗?一文带你 GNN 从入门到腾飞,做一个饭盆最稳 GNN 饭人! 图神经网络到底图个啥?搞懂图神经网络,首先你要先明确到底图个啥啥是图!图这种构造普遍存在于人类社会生存中,如人与人之间的社交网络会形成图、地铁线路及高铁线路会形成图、网民购买商品会形成“网民-商品”图、互联网中网页间的相互链接会形成图、论文的相互援用也会形成图。依据这些图的信息能够实现很多工作,例如依据用户和商品的历史交互,预测一个用户是否会购买一个商品或对它感兴趣;又如依据用户间的好友关系或交换记录,预测用户和用户之间是否形成好友关系。 既然图无处不在,那咱们怎么去对图做剖析呢?目前,图剖析工作通常采纳图嵌入技术进行解决。通过图嵌入技术,能够将图中的构造及内容等信息用一个低维向量进行表征,该向量能够作为输出用于上游的学习工作中。另外,图嵌入还能够与深度学习技术相结合。例如,基于部分连贯与平移不变的假如,能够将图嵌入与卷积神经网络(Convolutional Neural Network,CNN)相结合,从而失去图神经网络(Graph neural network,GNN)。 图上的学习工作包含: 图节点分类工作:图中每个节点都有对应的特色,当咱们已知一部分节点的类别时,能够对未知类型的节点进行分类。图边构造预测工作:图中节点与节点之间的边关系也存在多种类型,该工作是对节点和节点之间关系的预测。图的分类:该工作是对整个图进行分类,基本思路是将图中节点的特色聚合起来作为图的特色,再进行分类。学界业界倒退成啥样了?学界倒退状况近年来,图神经网络迎来了疾速暴发期。在实践钻研方面,相干工作对图神经网络的原理解释、变体模型以及对各种图数据的拓展适配等进行了钻研。统计近一年各大顶级会议上的相干论文,能够发现图神经网络成为最大的钻研热点。 图 2.1 学界倒退状况 业界倒退状况在利用实际方面,图神经网络展现出前所未有的渗透性,从视觉推理到开放性的浏览了解问题,从药物分子的研发到5G芯片的设计,从交通流量预测到3D点云数据学习,能够看到图神经网络极其广大的利用前景。 蚂蚁金服利用图神经网络模型,开掘设施共用图中“失常用户”和“骗保团伙”的关系模式,从而实现了对歹意账户的辨认。图中每个节点都有本人的特色信息,通过这些特色信息,能够开掘某一用户节点所关联的设施节点信息,当某一个用户关联泛滥设施时,能够认为该用户存在高危危险。同时,基于图中的关联关系,与该歹意用户及关联设施相互连接的节点也可能存在高危危险。 图 2.2 蚂蚁金服:高危账户辨认 滴滴出行钻研了一种基于时空多图卷积神经网络的网约车需求量预测模型。通过剖析区域之间简单的时空依赖关系,对网约车需求量进行精确预测,领导车辆的调度,进步车辆的利用率,缩小等待时间,并在肯定水平上缓解了交通的拥挤。 图 2.3 滴滴出行:车辆调控治理 阿里妈妈利用图神经网络,从用户行为日志、内容属性等不同维度开掘Query(查问词)、Item(商品)和Ad(广告)的多种关系。对于在线申请场景,通过计算用户查问词向量、前置行为中节点向量和广告节点向量之间的间隔进行高效的向量化最近邻检索,从而疾速匹配到合乎用户用意的广告并举荐给用户。 图 2.4 阿里妈妈:搜寻广告 匹配 网易音乐通过图神经网络,开掘用户的特色、歌曲的特色、用户对歌曲的行为特色,实现精准的音乐举荐。图中每个节点都具备构造信息,如果用户频繁订阅某种类别音乐或对某种类别音乐评分较高,那么零碎就能够认定该用户对该类音乐比拟感兴趣,就能够向该用户举荐更多该类别的音乐。 图 2.5 网易:音乐举荐 图神经网络图论基本概念针对非欧几里得结构化数据表示问题,研究者们引入了图论中形象意义上的图(Graph)来示意非欧几里得结构化数据。 图(Graph)G 由顶点汇合以及连边汇合形成,通常能够定义为如下模式: 顶点汇合( Vertex ) V 能够示意为 边汇合( Edge )E 能够示意为 图的示意模式常采纳顶点的度矩阵、邻接矩阵以及拉普拉斯矩阵等对图进行刻画。 顶点的度矩阵( Degree )D :与该顶点相关联的边的条数 邻接矩阵( Adjacency matrix )A :图构造的罕用示意办法 拉普拉斯矩阵( Laplacian matrix )L :图构造的一种示意办法 下图给出了 连通图及对应 的 度矩阵、邻接矩阵 、 拉普拉斯矩阵 的示例 。 ...

July 14, 2021 · 1 min · jiezi

关于神经网络:KDD-CUP-2021首届图神经网络大赛放榜百度飞桨PGL获得2金1银

近日,由 KDD CUP 与 OGB(Open Graph Benchmark)联结举办的首届图神经网络大赛正式放榜,在 DeepMind、微软、蚂蚁金服、UCLA 等寰球500多个顶尖企业、高校和实验室的强烈竞争中,百度凭借飞桨图学习框架 PGL 一路过关斩将,最终在全副三个赛道包揽了两冠一亚。 ▲ 本次大赛承办方斯坦福大学 Jure Leskovec 传授发表冠军队伍 据理解,KDD CUP 是 ACM SIGKDD 组织的年度赛事,素有 「大数据畛域世界杯」 之誉,是目前数据挖掘畛域最高程度、最具影响力、规模最大的国内顶级赛事。而往年,KDD CUP 与 OGB 联结举办了第一届 OGB-LSC(OGB Large-Scale Challenge)较量,提供来自真实世界的超大规模图数据,来实现图学习畛域的节点分类、边预测和图回归三大工作。 本次较量采取「闭卷考试」,整个较量周期只有2次提交模型后果机会,极其考验参赛队伍模型泛化能力,比赛难度极大。得益于百度在图神经网络的继续深耕,在本次大赛的三大赛道之中,百度飞桨图学习框架 PGL,共计夺得大规模节点分类赛道冠军、大规模图关系预测赛道冠军、化学分子图性质预测赛道亚军。 ▲ 飞桨 PGL 夺冠页面:https://ogb.stanford.edu/kddc... 飞桨 PGL 代码齐全凋谢,欢送大家应用、反馈和奉献。 PGL 链接:https://github.com/PaddlePaddle/PGLB 站 图神经网络 7 日教程:https://www.bilibili.com/video/BV1rf4y1v7cUPGL 图学习入门教程:https://aistudio.baidu.com/aistudio/projectdetail/413386飞桨 PGL 参赛报告 & 代码:https://github.com/PaddlePaddle/PGL/tree/main/examples/kddcup2021 大规模节点分类赛道冠军:引入基于异构关系的对立消息传递模型 OGB-LSC 节点分类数据集,来源于真实世界的超大规模学术援用网络 MAG(Microsoft Academic Graph)。OGB 官网提取了超2.4亿的实体(包含论文、作者等),构建出蕴含16亿边关系的大规模异构图。参赛选手需从异构图中开掘无效信息,预测出指定的 arXiv 论文的主题(总共蕴含153个主题,例如 cs.LG 机器学习、q-bio.BM 生物分子等)。 目前,解决节点分类的图学习办法次要蕴含两类:一类是标签传递算法,而另一类则是通过模型对多阶街坊特色进行聚合,并预测核心节点标签的图神经网络。然而目前这两种办法均有其局限性,无奈最大限度的利用图节点中的标签信息。 为解决上述问题,飞桨 PGL 提出了对立消息传递模型 UniMP,奇妙地利用了『标签覆盖』预测策略,使得模型能够在训练和预测中,同时进行标签传递和特色聚合,胜利地将上述两种图学习办法对立到消息传递模型中,并在半监督节点分类工作上获得显著晋升。目前,相干论文已被 IJCAI2021 收录,并成为目前节点分类工作中的支流的强基准。 ...

July 8, 2021 · 1 min · jiezi

关于神经网络:论文解读丨图神经网络应用于半结构化文档的命名实体识别和关系提取

摘要: 随着用于传递和记录业务信息的治理文档的宽泛应用,可能鲁棒且高效地从这些文档中主动提取和理解内容的办法成为一个迫切的需要。本次解读的文章提出利用图神经网络来解决半结构化文档中的实体辨认(NER)和关系提取问题。本文分享自华为云社区《论文解读系列十一:图神经网络应用于半结构化文档的命名实体辨认和关系提取》,原文作者:小菜鸟chg 。 摘要:随着用于传递和记录业务信息的治理文档的宽泛应用,可能鲁棒且高效地从这些文档中主动提取和理解内容的办法成为一个迫切的需要。此外,基于图的表达方法对不同文档模版的变动具备灵便的适应性,从而使得图表达方式与这些治理文档的半结构化个性十分符合。正因为图神经网络(GNN)可能很好地学习出文档中数据元素间的关系,所以本次解读的文章提出利用图神经网络来解决半结构化文档中的实体辨认(NER)和关系提取问题。经试验验证该文章提出的办法在单词分组、实体分类、关系预测三个工作上获得了SOTA后果,同时在FUNSD(表单了解)和IEHHR(手写婚姻档案了解)两个齐全不同类别的数据集上获得的试验后果进一步验证了本次解读文章所提出的办法的泛化性。 1. 办法GNN被广泛应用于NER和表格提取等工作中,本次解读的文章在此基础上提出将GNN利用于提取key-value对的工作中,不仅对文档图片中的实体进行分类,而且还会对实体间的关系进行预测。 给定一个输出文档,模型须要实现的工作包含:(a)单词分组:检测文档实体,行将雷同语义的单词进行分组;(b)实体分类:将检测到的实体分为预设的类别;(c)关系预测:发现实体间配对关系。 (1)图的结构本次解读的文章提出结构两张图来示意文档,并在此基础上训练三个不同的模型来解决对应的工作:单词分组f_1f1、实体分类f_2f2、关系预测f_3f3。如图1所示,文档会被示意为由OCR后果结构的图G_1=(V_1,E_1)G1=(V1,E1),其中V_1V1是由OCR后果中每个单词组成的节点汇合;对每个单词文本框左上角间的间隔进行kk-近邻(取k=10k=10)来生成边E_1E1,对各边计算分数s=f_1 (G_1)s=f1(G1),筛选出大于阈值\tau(FUNSD设为0.65, IEHHR设为0.9)的边就能够失去单词分组的后果。 图1 单词分组的图构造结构示意图 图2 实体分类和关系预测的图构造结构示意图 如图2所示,在G_1G1的根底上失去实体(即各单词分组)后,由每个实体结构失去图G_2=(V_2,E_2)G2=(V2,E2),其中V_2V2示意由G_1G1筛选失去的实体汇合,E_2E2是由各实体节点间全连贯失去的边汇合。由c=f_2 (G_2)c=f2(G2)失去实体分类后果;由s=f_3 (G_3)s=f3(G3)失去关系预测后果。 (2)图的计算 2. 试验后果 从FUNSD试验结果表明,本次解读文章提出的办法与LayoutLM相比拟还有优化空间,起因可能在于FUNSD的数据量较小。从IEHHR试验结果表明,该办法在表单辨认的其余畛域即手写记录了解上也具备肯定的成果,体现了其泛化性。 点击关注,第一工夫理解华为云陈腐技术~

July 7, 2021 · 1 min · jiezi

关于神经网络:带你认识9种常用卷积神经网络

摘要:在卷积神经网络中,通过应用filters提取不同的特色,这些filters的权重是在训练期间主动学习的,而后将所有这些提取的特色“组合”以做出决策。本文分享自华为云社区《神经网络罕用卷积总结》,原文作者:fdafad 。 进行卷积的目标是从输出中提取有用的特色。在图像处理中,能够抉择各种各样的filters。每种类型的filter都有助于从输出图像中提取不同的特色,例如程度/垂直/对角线边缘等特色。在卷积神经网络中,通过应用filters提取不同的特色,这些filters的权重是在训练期间主动学习的,而后将所有这些提取的特色“组合”以做出决策。 目录:2D卷积3D卷积1*1卷积空间可拆散卷积深度可拆散卷积分组卷据扩大卷积反卷积Involution2D卷积单通道:在深度学习中,卷积实质上是对信号按元素相乘累加失去卷积值。对于具备1个通道的图像,下图演示了卷积的运算模式: 这里的filter是一个3 x 3的矩阵,元素为[[0,1,2],[2,2,0],[0,1,2]]。filter在输出数据中滑动。在每个地位,它都在进行逐元素的乘法和加法。每个滑动地位以一个数字结尾,最终输入为3 x 3矩阵。 多通道:因为图像个别具备RGB3个通道,所以卷积个别多用于多通道输出的场景。下图演示了多通道输出场景的运算模式: 这里输出层是一个5 x 5 x 3矩阵,有3个通道,filters是3 x 3 x 3矩阵。首先,filters中的每个kernels别离利用于输出层中的三个通道,执行三次卷积,产生3个尺寸为3×3的通道: 而后将这三个通道相加(一一元素相加)以造成一个单个通道(3 x 3 x 1),该通道是应用filters(3 x 3 x 3矩阵)对输出层(5 x 5 x 3矩阵)进行卷积的后果: 3D卷积在上一个插图中,能够看出,这实际上是在实现3D-卷积。但通常意义上,依然称之为深度学习的2D-卷积。因为filters的深度和输出层的深度雷同,3D-filters仅在2个维度上挪动(图像的高度和宽度),失去的后果为单通道。通过将2D-卷积的推广,在3D-卷积定义为filters的深度小于输出层的深度(即卷积核的个数小于输出层通道数),故3D-filters须要在三个维度上滑动(输出层的长、宽、高)。在filters上滑动的每个地位执行一次卷积操作,失去一个数值。当filters滑过整个3D空间,输入的构造也是3D的。2D-卷积和3D-卷积的次要区别为filters滑动的空间维度,3D-卷积的劣势在于形容3D空间中的对象关系。3D关系在某一些利用中非常重要,如3D-对象的宰割以及医学图像的重构等。 1*1卷积对于1*1卷积而言,外表上如同只是feature maps中的每个值乘了一个数,但实际上不仅仅如此,首先因为会通过激活层,所以实际上是进行了非线性映射,其次就是能够扭转feature maps的channel数目。 上图中形容了:在一个维度为 H x W x D 的输出层上的操作形式。通过大小为 1 x 1 x D 的filters的 1 x 1 卷积,输入通道的维度为 H x W x 1。如果咱们执行 N 次这样的 1 x 1 卷积,而后将这些后果联合起来,咱们能失去一个维度为 H x W x N 的输入层。 ...

June 28, 2021 · 2 min · jiezi

关于神经网络:COMP9414-Artificial-Intelligence

COMP9414: Artificial IntelligenceAssignment 1: Temporal PlannerDue Date: Week 6, Friday, July 9, 11:59 p.m.Value: 15%This assignment concerns developing optimal solutions to planning problems for complex tasksinspired by the scenario of building a house, which requires a range of basic tasks to be performed,sometimes in sequence, sometimes in parallel, but where there are constraints between the tasks.We can assume that any number of basic tasks can be scheduled at the same time, provided allthe constraints between all the tasks are satisfied. The objective is to develop a plan to finish eachof the basic tasks as early as possible.For simplicity, let us represent time as days using integers starting at 0, i.e. days are numbered0, 1, 2, etc., up to 99. A temporal planning problem is specified as a series of basic tasks. Eachtask has a fixed duration in days. In addition, there can be constraints both on single tasks andbetween two tasks, for example, a task might have to start after day 20, or one task might haveto start after another task finishes (the complete list of possible constraints is given below). Asolution to a planning problem is an assignment of a start day to each of the tasks so that allthe constraints are satisfied. The objective of the planner is to develop a solution for any givenplanning problem where each task finishes soonest, i.e. the solution such that the sum of the enddays over all the tasks is the lowest amongst all the possible plans that satisfy the constraints.More technically, this assignment is an example of a constraint optimization problem, a problemthat has constraints like a standard Constraint Satisfaction Problem (CSP), but also a cost as-sociated with each solution. For this assignment, you will implement a greedy algorithm to findoptimal solutions to temporal planning problems that are specified and read in from a file. How-ever, unlike the greedy search algorithm described in the lectures on search, this greedy algorithmhas the property that it is guaranteed to find an optimal solution for any temporal planningproblem (if a solution exists).You must use the AIPython code for constraint satisfaction and search to develop a greedy searchmethod that uses costs to guide the search, as in heuristic search (heuristic search is the same asA? search where the path costs are all zero). The search will use a priority queue ordered by thevalues of the heuristic function that gives a cost for each node in the search. The heuristic functionfor use in this assignment is defined below. The nodes in this search are CSPs, i.e. each state isa CSP with variables, domains and the same constraints (and a cost estimate). The transitionsin the state space implement domain splitting subject to arc consistency (the AIPython codeimplements this). A goal state is an assignment of values to all variables that satisfies all theconstraints. The cost of a solution is the sum of the end days of the basic tasks in the plan.A CSP for this assignment is a set of variables representing tasks, binary constraints on pairs oftasks, and unary domain constraints on tasks. The domains for the start days of the tasks theintegers from 0 to 99, and a task duration is in days > 0. The only possible values for the startand end days of a task are integers, however note that it is possible for a task to finish after day ...

June 24, 2021 · 10 min · jiezi

关于神经网络:STATS-330-Revision编程讲解

STATS 330 Revision The selling prices (in British pounds) at auction of 32 antique grandfather clocks wererecorded. The age of each clock (in years) and the number of people who participated inthe bidding were also recorded.Age Bidders Price Age Bidders Price Age Bidders Price13 1235 115 12 1080 127 7 8459 1522 156 6 1047 182 11 197912 1822 132 10 1253 137 9 12979 946 137 15 1713 117 11 10248 1147 153 6 1092 117 13 115210 1336 170 14 2131 182 8 155011 1884 184 10 2041 143 6 8549 1483 108 14 1055 175 8 15456 729 179 9 1792 111 15 11758 1593 111 7 785 115 7 7445 1356 168 7 1262(a) A conditional plot of Price versus Age given the level of Bidders was created using coplot.This plot suggests that Age and Bidders interact.i. What is meant by the statement “Age and Bidders interact”.ii. Explain what feature of the conditional plot indicates that there is an interactionbetween Age and Bidders (your explanation should clearly identify how the plot wouldbe different if the two variables did not interact).[5 marks](b) The output for the regression model containing the Age:Bidders interaction is:Estimate Std. Error t value Pr(>|t|)(Intercept) 320.4580 295.1413 1.086 0.28684Age 0.8781 2.0322 0.432 0.66896Bidders -93.2648 29.8916 -3.120 0.00416 ** ...

June 20, 2021 · 15 min · jiezi

关于神经网络:技术实践丨体验量子神经网络在自然语言处理中的应用

摘要:本文从零带你体验量子神经网络在自然语言解决中的利用本文分享自华为云社区《体验量子神经网络在自然语言解决中的利用》,原文作者:JeffDing。 本文从零带你体验量子神经网络在自然语言解决中的利用。 一、运行环境CPU:Intel(R) Core(TM) i7-4712MQ CPU @ 2.30GHz 内存:4GB 操作系统:Ubuntu 20.10 MindSpore版本:1.2 二、装置Mindspore参考官网装置文档:https://www.mindspore.cn/inst... 装置MindQuantum参照文档 :https://gitee.com/mindspore/m... 通过Mindspore.__version__查看版本 三、体验量子神经网络在自然语言解决中的利用1.环境筹备入包 import numpy as np import time from projectq.ops import QubitOperator import mindspore.ops as ops import mindspore.dataset as ds from mindspore import nn from mindspore.train.callback import LossMonitor from mindspore import Model from mindquantum.nn import MindQuantumLayer from mindquantum import Hamiltonian, Circuit, RX, RY, X, H, UN #数据预处理 def GenerateWordDictAndSample(corpus, window=2): all_words = corpus.split() word_set = list(set(all_words)) word_set.sort() word_dict = {w: i for i,w in enumerate(word_set)} sampling = [] for index, word in enumerate(all_words[window:-window]): around = [] for i in range(index, index + 2*window + 1): if i != index + window: around.append(all_words) sampling.append([around,all_words[index + window]]) return word_dict, sampling word_dict, sample = GenerateWordDictAndSample("I love natural language processing") print(word_dict) print('word dict size: ', len(word_dict)) print('samples: ', sample) print('number of samples: ', len(sample))运行后果: ...

June 11, 2021 · 7 min · jiezi

关于神经网络:神经网络优化器

神经网络的目标是寻找适合的参数,使得损失函数的值尽可能小。解决这个问题的过程称为最优化。解决这个问题应用的算法叫做优化器。 1、 BGD、SGD、MSGDBGD:最原始梯度降落算法,计算需应用整个数据集的损失(慢)SGD:每次选取一个batch数据,每个数据点的loss都会对模型进行更新(震荡,易受噪声影响)MSGD:计算一批样本的均匀来更新,个别为这种。别离针对学习率和各个参数设置更新策略。 动量法:静止大小跟过来状态相干。(优化梯度更新方向) 牛顿法:先用以后速度更新模型,在用更新的长期模型对参数动量进行改正。 自适应法:对每个参数设置不同的学习率。

April 26, 2021 · 1 min · jiezi

关于神经网络:L1L2正则化

P范数p范数的定义 $\|\mathbf{x}\|_{p}:=\left(\sum_{i=1}^{n}\left|x_{i}\right|^{p}\right)^{1 / p}$p=1时 $\|\boldsymbol{x}\|_{1}:=\sum_{i=1}^{n}\left|x_{i}\right|$p=2时 $\|\boldsymbol{x}\|_{2}:=\left(\sum_{i=1}^{n}\left|x_{i}\right|^{2}\right)^{\frac{1}{2}}$L1范数是指向量中各个元素绝对值之和,L2范数是指向量各元素的平方和而后求平方根。事实上,等价于在求最优化问题上加一个约束条件。 L1-regularization$\mathbf{w}^{*}=\arg \min _{\mathbf{w}} \sum_{j}\left(t\left(\mathbf{x}_{j}\right)-\sum_{i} w_{i} h_{i}\left(\mathbf{x}_{j}\right)\right)^{2}+\lambda \sum_{i=1}^{k}\left|w_{i}\right|$$t\left(\mathbf{x}_{j}\right)$为实在值,$\sum_{i} w_{i} h_{i}\left(\mathbf{x}_{j}\right)$为预测值,在loss函数中退出$\lambda \sum_{i=1}^{k}\left|w_{i}\right|$做l1正则化。把问题简单化,当只有两个权重变量 $w_1$ ,$w_2$ 时剖析。椭圆为原指标函数的一条等高线,最优解在 $w_{lin}$ 处,此时的 $w_1$ ,$w_2$ 会造成模型过拟合。退出L1范数做为约束条件,保障 $w$的地位不能来到红外矩阵,蓝色箭头 $E_{in}$为指标函数在该处的梯度方向, $w$只能沿着边界向左上方挪动 。最终 $w$将稳固在顶点处,达到最优解 $w^*$,此时, $w_1$=0,这也就是采纳l1范数会使 $w$产生稠密性的起因。 L2-regularization$\mathbf{w}^{*}=\arg \min _{\mathbf{w}} \sum_{j}\left(t\left(\mathbf{x}_{j}\right)-\sum_{i} w_{i} h_{i}\left(\mathbf{x}_{j}\right)\right)^{2}+\lambda \sum_{i=1}^{k} w_{i}^{2}$$\sum_{i=1}^{k} w_{i}^{2}$ 当i=2时,l2范数为圆。梯度降落法更新$w$,只能朝着范数球上的$w$处的切线方向更新,既绿色箭头的地位。当静止到$w^*$时切线方向重量为0,无奈继续移动,达到最优解。以上剖析基于二维状况,扩大到高维同理。 L1范数能够进行特征选择,即让特色的系数变为0,L2范数能够避免过拟合,晋升模型的泛化能力。

March 16, 2021 · 1 min · jiezi

关于神经网络:Normalization的基本思想

简述Normalization的根本思维其实相当直观:因为深层神经网络在做非线性变换前的激活输出值(就是那个x=WU+B,U是输出)随着网络深度加深或者在训练过程中,其散布逐步产生偏移或者变动,之所以训练收敛慢,个别是整体散布逐步往非线性函数的取值区间的上上限两端凑近(对于Sigmoid函数来说,意味着激活输出值WU+B是大的负值或正值),所以这导致反向流传时低层神经网络的梯度隐没,这是训练深层神经网络收敛越来越慢的实质起因,而Normalization就是通过肯定的规范化伎俩,把每层神经网络任意神经元这个输出值的散布强行拉回到均值为0方差为1的规范正态分布,其实就是把越来越偏的散布强制拉回比拟规范的散布,这样使得激活输出值落在非线性函数对输出比拟敏感的区域,这样输出的小变动就会导致损失函数较大的变动,意思是这样让梯度变大,防止梯度隐没问题产生,而且梯度变大意味着学习收敛速度快,能大大放慢训练速度。 简略来说:对于每个隐层神经元,把逐步向非线性函数映射后向取值区间极限饱和区聚拢的输出散布强制拉回到均值为0方差为1的比拟规范的正态分布,使得非线性变换函数的输出值落入对输出比拟敏感的区域,以此防止梯度隐没问题。因为梯度始终都能放弃比拟大的状态,所以很显著对神经网络的参数调整效率比拟高,就是变动大,就是说向损失函数最优值迈动的步子大,也就是说收敛地快。 BatchNormalization import numpy as npdef Batchnorm(x, gamma, beta, bn_param): # x_shape:[B, C, H, W] running_mean = bn_param['running_mean'] running_var = bn_param['running_var'] results = 0. eps = 1e-5 x_mean = np.mean(x, axis=(0, 2, 3), keepdims=True) #沿着通道计算每个batch的均值u x_var = np.var(x, axis=(0, 2, 3), keepdims=True) #沿着通道计算每个batch的方差^2 x_normalized = (x - x_mean) / np.sqrt(x_var + eps) #对x做归一化,x’=(x-u)/开根号(^2+) results = gamma * x_normalized + beta #退出缩放和平移变量和 ,归一化后的值,y=x’+ # 因为在测试时是单个图片测试,这里保留训练时的均值和方差,用在前面测试时用 running_mean = momentum * running_mean + (1 - momentum) * x_mean running_var = momentum * running_var + (1 - momentum) * x_var bn_param['running_mean'] = running_mean bn_param['running_var'] = running_var return results, bn_param退出缩放平移变量的起因是:保障每一次数据通过归一化后还保留原有学习来的特色,同时又能实现归一化操作,减速训练。 这两个参数是用来学习的参数。 ...

March 14, 2021 · 2 min · jiezi

关于神经网络:Windows-Messages-SysUtils

GroupBox1: TGroupBox; Label2: TLabel;PortEdit: TEdit;startbtn: TButton;endbtn: TButton;Label3: TLabel;IdTCPServer1: TIdTCPServer;IdAntiFreeze1: TIdAntiFreeze;StatusBar1: TStatusBar;Label1: TLabel;Label4: TLabel;Edit1: TEdit;Edit2: TEdit;GroupBox2: TGroupBox;Memo1: TMemo;Edit3: TEdit;Label5: TLabel;Edit4: TEdit;Label6: TLabel;procedure FormCreate(Sender: TObject);[url]https://book.douban.com/doulist/136132464/[/url][url]https://movie.douban.com/doul...[/url][url]https://www.douban.com/doulis...[/url][url]https://m.douban.com/doulist/...[/url][url]https://book.douban.com/douli...[/url][url]https://movie.douban.com/doul...[/url][url]https://www.douban.com/doulis...[/url][url]https://m.douban.com/doulist/...[/url][url]https://book.douban.com/douli...[/url][url]https://movie.douban.com/doul...[/url][url]https://www.douban.com/doulis...[/url][url]https://m.douban.com/doulist/...[/url][url]https://book.douban.com/douli...[/url][url]https://movie.douban.com/doul...[/url][url]https://www.douban.com/doulis...[/url][url]https://m.douban.com/doulist/...[/url][url]https://book.douban.com/douli...[/url][url]https://movie.douban.com/doul...[/url][url]https://www.douban.com/doulis...[/url][url]https://m.douban.com/doulist/...[/url][url]https://book.douban.com/douli...[/url][url]https://movie.douban.com/doul...[/url][url]https://www.douban.com/doulis...[/url][url]https://m.douban.com/doulist/...[/url][url]https://book.douban.com/douli...[/url][url]https://movie.douban.com/doul...[/url][url]https://www.douban.com/doulis...[/url][url]https://m.douban.com/doulist/...[/url][url]https://book.douban.com/douli...[/url][url]https://movie.douban.com/doul...[/url]

February 18, 2021 · 1 min · jiezi

关于神经网络:FaceBoxes-高精度的CPU实时人脸检测器

论文题目:《FaceBoxes: A CPU Real-time Face Detector with High Accuracy》 论文链接:https://arxiv.org/pdf/1708.05... 年份:2017 论文作者:Shifeng Zhang等人 作者单位:中国科学院自动化研究所等 公众号CVpython 同步公布 1. 论文要解决什么问题?要放弃高精度,还要在CPU上达到实时?还真有点难,然而Shifeng Zhang等人针对这个问题,提出了人脸检测模型FaceBoxes,体现SOTA。 2. FaceBoxes如何解决问题?FaceBoxes框架如图1所示,次要包含Rapidly Digested Convolutional Layers (RDCL)和Multiple Scale Convolutional Layers (MSCL)模块,还有anchor密集策略。 2.1 RDCLRDCL的目标是为了疾速下采样,让模型可能在CPU下面能达到实时。RDCL采纳的办法是放大空间大小,抉择适合的卷积核大小和缩小输入通道。 放大空间大小:Conv1, Pool1, Conv2 and Pool2 的步长别离是4, 2, 2和 2, 空间大小疾速升高了32倍。适合的卷积核大小:前几层的一些核应该是比拟小,以便减速,然而也应该足够大,以加重空间大小减小而带有的信息失落(为什么能够缩小信息失落s)。Conv1, Conv2的核大小为7x7, 5x5,所有池化层的核大小为3x3。缩小输入通道:应用C.ReLU缩小输入通道,操作如图2(a)所示。因为C.ReLU作者统计发现底层卷积时卷积核存在负相关,也就是说假如咱们原本应用10个卷积核,然而当初只须要用5个卷积核,另外5个卷积核的后果能够通过负相关失去。结果表明应用C.ReLU减速的同时也没损失精度。 2.2 MSCLMSCL是为了失去更好地检测不同尺度的人脸。 深度:在MSCL模块中,随着网络的加深,便失去不同大小的特色映射(多尺度特色)。在不同大小特色映射中设置不同大小的anchor,有利于检测不同大小的人脸。宽度:Inception由多个不同核大小的卷积分支组成。在这些分支中,不同的网络宽度,也有不同大小的特色映射。通过Inception,感触野也丰盛了一波,有利用检测不同大小的人脸。MSCL在多个上尺度进行回归和分类,在不同尺度下检测不同大小的人脸,可能大大提高检测的召回率。 2.3 Anchor密度策略Inception3的anchor大小为32,64和128,而Conv3_2和Con4_2的anchor大小别离为256,512。anchor的平铺距离等于anchor对应层的步长大小。例如,Con3_2的步长是64个像素点,anchor大小为256x256,这表明在输出图片上,每隔64个像素就会有一个256x256的anchor。对于anchor的平铺密度文中是这样定义的: $$A_{density}=A_{scale}/A_{interval}$$ 其中$A_{density}$和$A_{interval}$别离为anchor的尺度战争铺距离。默认的平铺距离(等于步长)默别离认为32,32,32,64和128。所以Inception的平铺密度别离为1,2,4,而Con3_2和Con4_2的平铺密度别离为4,4。 能够看进去,不同尺度的anchor之间存在平铺密度不均衡的问题,导致小尺度的人脸召回率比拟低,因而,为了改善小anchor的平铺密度,作者提出了anchor密度策略。为了使anchor密集n倍,作者平均地将$A_{number}=n^2$个anchor铺在感触野的核心左近,而不是铺在核心,如图3所示。将32x32的anchor密集4倍,64x64的anchor密集两倍,以保障不同尺度的anchor有雷同的密度。 2.4 训练数据扩增: 色彩扭曲随机采样尺度变换程度翻转Face Boxes过滤:通过数据扩增的图片中,如果face boxes的核心还在图片上,则保留重叠局部,而后把高或者宽<20的过滤掉(这个操作不是很懂了,为什么把小指标过滤掉?)匹配策略:训练期间,须要确定哪些anchor对应脸部的bounding box,咱们首先用最佳jaccard重叠将每一张脸匹配到anchor,而后将anchor匹配到jaccard重叠大于阈值的任何一张脸。 Loss function: 对于分类,采纳softmax loss,而回归则采纳smooth L1 损失。 Hard negative mining:anchor 匹配后,发现很多anchor是负的,这会引入重大的正负样本不均衡。为了疾速优化和稳固训练,作者对loss进行排序而后抉择最小的,这样子使得负样本和正样本的比例最大3:1。 ...

November 22, 2020 · 1 min · jiezi

关于神经网络:神经网络可视化GradCAM

论文题目:《Grad-CAM:Visual Explanations from Deep Networks via Gradient-based Localization》 作者单位:Georgia Institute of Technology,Facebook AI Research 年份:2017 公众号: CVpython 同步公布 导语:前段时间,用Grad-CAM来对神经网络的输入进行可视化,过后做的是一个多便签分类工作,然而可视化进去的后果感觉都点怪怪的,总感觉哪里不对。这次论文的总结让我对Gradm-CAM有了进一步的了解,终于晓得过后可视化问题到底在哪了,Oh yeah!。 1.论文要解决什么问题?尽管CNN模型在CV畛域获得了很大的冲破,然而CNN就像一个“黑盒子一样”,外面到底是怎么一回事,还是很难让人明确,可解释性很差。如果模型不work,其实也很难解析分明到底是为什么。所以作者提出Grad-CAM模型,对CNN所做的决策作出可视化解释。 2. 论文所提模型如何解决问题?很多钻研都表明CNN更深的层可能捕捉更高级的视觉构造信息,而且,卷积特色中空间信息会在全连贯层失落,所以在最初卷积层,咱们在高级的语义信息和具体的空间信息之间可能失去最好的折衷(为什么说这是一个折衷?)。Grad-CAM利用“流进”CNN的最初一层的梯度信息来了解每个神经元对决策的重要水平。 Grad-CAM总体构造如下图所示: 输出图像通过前向计算失去了特色映射$A$,对于类别$c$,在softmax之前有类别分数$y^c$。当初假如$A^k_{(x,y)}$为特色映射$A$在$(x,y)$地位的第$k$个通道的值,而后计算: 咱们先来了解一下$y^c$对$A^k_{(x,y)}$的求导可能失去什么。 先举个简略的例子,对于公式$y=w1*x1+w2*x2$,其中$x1,x2$为自变量,$w1,w2$别离是两个自变量的系数,$y$对$x1$求偏导后果为$w1$,如果$x1$对$y$更加重要,$w1$系数天然也更大,所以$y$对$x1$的偏导后果也就更大了,那是不是阐明了求导能够反映出自变量对函数的重要水平?答案是显然的(如果有大佬感觉不谨严,请指导)。 所以$y^c$对$A^k_{(x,y)}$的求导可能失去什么?失去的就是$A^k_{(x,y)}$这个特征值对$y^c$的重要水平,再来一个全局均匀池化,失去就是特色映射第$k$个通道对$y^c$的重要水平了。 下面公式(1)求出了特色映射每个通道的系数,而后线性组合一下,如公式(2)所示。 加上$ReLU$的起因是因为作者只对那些对类别分数有正向影响的特色感兴趣,所以过滤了一下那些有负面影响的特色。 尽管Grad-CAM的可视化是具备类别判断力的,并且可能定位到相干的区域,然而它短少显示细粒度重要性的能力。例如图1(c),尽管Grad-CAM能够定位到猫的区域,然而为什么网络将它预测为“tiger cat”,从低分辨率的heat-map很难失去论断。为了可能定位的同时也显示细粒度,作者通过点乘将Guided Backpropagation 和Grad-CAM相结合,失去Guided Grad-CAM。如图1(d,j)所示。 3. 试验后果如何?定位能力更好,分类也不弱。 4.对咱们有什么指导意义?感觉这才是最重要的点。 Grad-CAM的可视化后果(包含区域和细粒度)为咱们提供一个模型不work的解释,譬如某个图像分类错了,咱们可视化一下,是感兴趣的区域有问题还是提取的细粒度特色有问题?还能够验证数据集偏差,论文中有一个例子,例如辨认医生和护士,可视化的结果显示模型定位的区域在人脸和发型,模型把有一些女医生辨认成护士,而男护士辨认成医生,存在性别偏见,认为男的就是医生,女的就是护士,看看数据集,会发现可能是因为78%的医生外面都是男的,而93%的护士都是女的,就存在数据集偏差。本文由博客群发一文多发等经营工具平台 OpenWrite 公布

November 15, 2020 · 1 min · jiezi

关于神经网络:用树莓派4b构建深度学习应用七Codeless开发篇

前言通过前几篇的致力,咱们把支流的几个AI框架都装置了一下,波及了太多的代码,略显干燥。这篇咱们试着在这根底上,做一些乏味的AI利用,并赶一波时尚全程采纳无代码开发。 当初建设人工智能利用最大的挑战在于几个方面: 数据采集与标注须要花大量的工夫和人力;模型的训练工夫很长,算力老本也高;模型泛化能力很弱,换一个场景就须要更换模型;根底算法艰涩难懂,科研和学校仍是主力军;很多畛域还没有成熟的商业化解决方案。随着技术的一直倒退,人工智能应该成为某一零碎的底层技术,在降本增效方面施展更大的价值。AI 应该像水和电那样,成为任何人都随开随用的一种资源。这里介绍一个网站,就有点这个意思了。 Teachable Machine 这个网站提供了一个简略的人工智能训练平台,次要以监督学习为主,提供了图像分类,声音分类和姿势辨认三种类型的AI利用。能够将训练好的模型,以 Tensorflow,Tensorflow.js 或 Tensorflow Lite 三种模式来保留,这样咱们能够很不便的将其部署到手机端或是树莓派上。 https://teachablemachine.with... 训练模型分为三个步骤:采集数据,训练模型,导出模型。 1. 新建我的项目咱们筹备先做一个手势辨认的利用,新建一个图像分类我的项目,再抉择 Image Project 2. 采集数据能够通过上传图像或是摄像头的形式来采集图像,填入分类的类别名称,比方 one。 用摄像头会比拟不便,按住 Hold to Record 按钮就会记录,还能够抉择帧率。录制过程中,能够随时删除一些不适宜的样本,也能够反复录制,减少样本多样性。 而后顺次加第二个类别,第三个类别... 始终到 ten,共十个无效类别。这时候记得肯定要加一个 nothing,作为排除项。 Tip: 要留神每个类别的图像数量尽量放弃差不多的程度上,防止造成样本不均衡。3. 训练模型填入 Epochs,默认是50,只有没有过拟合,能够依据状况改大些,进步准确率; Batch Size,默认是16,太小的话不容易收敛,太大的话容易欠拟合。显卡的显存足够的话,我比拟科学32; Learning Rate,学习率是每次梯度降落更新的幅度,过大容易震荡,过小影响模型收敛速度,默认 0.001。 还能够点击 Under the hood,来查看整个训练过程中的曲线,有点 tensorboard 的滋味了。最初还能计算每个类别的准确率和混同矩阵,完满! Tip: 训练中记得不要切换标签,放弃tab始终处于开启状态,防止浏览器优化后盾影响训练模型。4. 验证模型能够在训练完结后,从新用摄像头来验证分类的后果,列表里会输入模型的预测概率,十分直观好用。 你能够及时对谬误的类别,再补充一些样本,进步分类的准确率。 5. 导出模型点击 Export Model 按钮,会弹出一个对话框,咱们这里抉择 Tensorflow Lite 模型,还能够抉择导出的精度类型,Floating point ,Quantized 或 EdgeTPU。 ...

October 11, 2020 · 1 min · jiezi

关于神经网络:上手深度学习之前我们先聊聊数学

摘要:深度神经网络是建设在微积分和一些统计学的根底之上的。深度神经网络(Deep neural network,DNN)实质上是由具备多个连贯的感知器造成的,其中一个感知器是单个神经元。咱们能够将人工神经网络(Artificial neural network,ANN)看作一个蕴含一组沿着加权门路馈送的输出零碎。而后对这些输出进行解决,并产生一个输入来执行某些工作。随着工夫的推移,人工神经网络将会“学习”,并倒退出不同的门路。各种门路能够具备不同的权重,并且被认为更重要(或产生更现实后果)的门路在模型内被调配的权重比那些产生较少现实后果的门路更高。 在深度神经网络中,如果所有的输出都密集地连贯到所有的输入,那么这些层就称为 密集层(Dense layers)。此外,深度神经网络能够蕴含多个 暗藏层(Hidden layer)。暗藏层基本上是神经网络输出和输入之间的点,激活函数在这里对输出的信息进行转换。它之所以被称为暗藏层,是因为它不能间接从零碎的输出和输入中察看到。神经网络的深度越深,网络能从数据中辨认的信息就越多。 然而,只管从数据中学习尽可能多的信息是咱们的指标,但深度学习模型可能会受到过拟合的影响。当模型从训练数据中学习了太多的信息,包含随机噪声时,就会呈现这种状况。 模型可能确定数据中非常复杂的模式,但这会对新数据的性能产生负面影响。训练数据中接管到的噪声并不适用于新的或未见过的数据,并且模型无奈对所发现的模式进行泛化。非线性在深度学习模型中也是十分重要的。尽管模型会因为领有多个暗藏层而学到很多信息,但将线性模式利用于非线性问题会导致性能低下。 当初,问题来了,“这些层是如何学习的?”那么,让咱们将人工神经网络利用到一个实在的场景中去解决问题,以理解如何训练模型来实现指标。在目前寰球新冠肺炎疫情之下,很多学校都过渡到了虚构学习,这使得一些学生放心他们通过课程的机会。任何人工智能零碎都应该可能解决“我是否通过这门课程”这种问题。 为简略起见,让咱们构想此模型只有 3 个输出:学生听课次数、花在作业上的工夫,以及在整个授课过程中网络掉线的次数。这个模型的输入将是一个二元分类;学生要么通过课程,要么没通过课程。当初是学期末,学生 A 听了 21 堂课,花了 90 个小时实现作业,并且在这个学期中,网络掉线 7 次。这些输出被输出到模型中,输入预测学生有 5% 的机会通过课程。一个星期后,期末问题颁布,学生 A 通过了这门课程。那么,这个模型的预测出了什么问题呢? 从技术上来说,并没有出问题。该模型原本能够依照目前开发的模型工作。但问题是,模型并不知道产生了什么。咱们原本只是在门路上对一些权重进行了初始化,但模型目前并不知道什么是对的,什么是错的;因而,权重是不正确的。这就是学习的意义所在。咱们的想法是,模型须要理解什么时候是谬误的,咱们通过计算某种模式的 "损失 "来实现这一点。计算的损失取决于以后的问题,但它通常波及最小化预测输入和理论输入之间的差别。 在下面的场景中,只有一个学生和一个误差点须要最小化。然而,通常状况却并非如此。当初,思考到有多个学生和多个差别最小化。因而,总损失通常计算为所有预测值与理论观测值之差的平均值。 回忆一下,我在后面提到的被计算的损失取决于以后的问题。因而,因为咱们以后的问题是二元分类,适当的损失计算将是 穿插熵损失。这个函数背地的想法是,它将学生是否会通过课程的预测散布与理论散布进行比拟,并试图将这些散布之间的差别最小化。 假如咱们不再想预测学生是否能通过这门课程,而是当初想预测他们这门课的问题。穿插熵损失将不再是一个适合的办法,相同,均方误差损失 将更适合。相同,均方误差损失会更适合。这种办法实用于回归问题,其想法是它将尝试最小化理论值和预测值之间的平方差。 当初,咱们理解了一些损失函数,就能够进入损失优化和模型训练了。领有良好的深度神经网络的一个关键因素是领有适合的权重。损失优化应该是土找到一组权重 $W$,它将使计算的损失最小化。如果只有一个权重重量,则能够在二维图上绘制权重和损失,而后抉择使损失最小的权重。然而,大多数深度神经网络具备多个权重重量,将一个 $n$ 维图进行可视化是十分艰难的。 取而代之的是,计算损失函数绝对于所有权重的导数来确定最大回升方向。既然模型当初曾经了解上行和上行的方向,它就会向下前进,直到在部分最小值处达到收敛点。一旦这个降落点实现,就会返回一组最优权重,这就是深度神经网络应该应用的权重(假如模型开发得很好)。 计算这个导数的过程被称为 反向流传(Back propagation),它实质上是微积分的链式法则。思考到下面显示的神经网络,第一组权重的渺小变动是如何影响最终损失的?这就是导数或梯度试图解释的内容。然而,第一组权值被输出到一个暗藏层,而后暗藏层有另一组权值导致预测的输入和损失。因而,也应该思考权重变动对暗藏层的影响。这是网络中仅有的两个局部。然而,如果有更多的权重须要思考,这个过程能够通过将链式规定从输入利用到输出来持续这一过程。 训练深度神经网络时要思考的另一个重要因素是学习率。当模型在寻找一个最优的权值集时,它须要通过一些因子来更新它的权重。尽管这看起来微不足道,然而决定模型应该挪动的因子是相当艰难的。如果因子太小,那么模型可能会运行一段指数级的工夫,或者陷入某个不是全局最小值的中央。如果因子太大,那么模型可能会齐全偏离指标点,进而发散。 尽管固定的学习率可能是现实的,但 自适应学习率(Adaptive learning rate)会缩小呈现前文所提到的问题的机会。也就是说,因子将依据以后梯度、以后权重的大小或可能影响模型下一步查找最佳权重的地位的某些其余因素而发生变化。 能够看出,深度神经网络是建设在微积分和一些统计学的根底之上的。评估这些过程背地的数学十分有用,因为它能够帮忙人们理解模型外部真正产生的事件,这能够导致开发更好的整体模型。然而,即便这些概念不容易了解,大多数程序都附带了主动微分等工具,所以不必放心。 点击关注,第一工夫理解华为云陈腐技术~

September 30, 2020 · 1 min · jiezi

关于神经网络:softmax-输出层数学原理推导

相比于计算机,我更喜爱数学的推导,感觉数学推导是可触摸的更有立体感,甚至你能够追溯到基本。作为神经网络算法的第一篇文章,我决定用softmax输入层作为开篇之作。 这篇文章我感觉不错 这篇十分业余 如上图所示是个粗略的神经网络模型,其实就是简略的全连贯神经网络。我明天探讨的只是output layer,用的是softmax层作为神经网络的输入层,所以咱们只须要关注最初一层就行了。 softmax 输入层如下所示:下方的[1,2,3,4],代表softmax层的四个输出上方的[0.03,0.09,0.24,0.64]代表softmax层的四个输入。 十分好了解,输出和输入的关系是怎么样的呢?又有什么样的性质呢?咱们用数学公式就高深莫测: 这就是softmax函数表达式我本人手写兴许更分明:是吧高深莫测,更为要害的是性质十分像全概率公式性质。 确实softmax最次要的作用,就是将神经网络的输入转化为概率模式。天然咱们想到,神经元的输入值越大,通过输入层转换的概率就越大。那么目标是什么呢??首先咱们须要晓得softmax层设计成概率样子,大概率就是为分类服务的。个别label有几类,最初的神经元就有几个。通过one-hot编码,将label变成一个个向量。如果一个神经元通过输入层概率最大,那么改神经元所在的分类就是预测的后果,而后和lable值进行比对。统一则分类正确,不统一则分类谬误。脑筋直的的我层一开始就想,神经元输入最高通过softmax层的输入概率就越高,还要softmax层干嘛,多此一举。其实softmax层大有玄机,如果没有概率化,模型就是去了纠正错误的迷信方向,没有方法结构损失函数,更不要提优化了。提到损失函数,那么咱们预测谬误‘损失’的是什么呢? 引入损失函数---赫赫有名穿插熵误差函数: 此时的N为样本数量,y代表通过one-hot编码后的向量如[0,1,0,0]字母O为通过softmax输入的概率向量如[0.03,0.09,0.24,0.64]点积意思是向量对应相乘的和,并未向量相乘。如(y,O)=00.3+10.09+00.24+00.64=0.09 那损失函数到底损失的是什么呢?咱们能够轻松发现,对于一个样本来说如果分类正确且输入概率值越高则向量点积越高,整个损失函数越小。所以,所有样本和最小则整个模型越准确。咱们须要找到适合的神经元参数,使损失函数最小,这个过程咱们叫 优化!还有一种解释,是依据名称而来,为什么叫穿插熵损失?穿插好了解,点积嘛。这里熵指的是信息熵,这里表达式也是依据信息熵表达式而来,信息熵越小,则取得信息越简略,分类越正确。 开始优化:首先咱们举个模型来计算优化过程:如图是一个全连贯神经网络的最初几层模型。这里要有个习惯就是看到模型向前计算:z4 = w41o1+w42o2+w43*o3z5 = w51o1+w52o2+w53*o3 z6 = w61o1+w62o2+w63*o3z4,z5,z6代表456号神经元输入,作为softmax层的输出那么很容易失去softmax函数的输入a4 = e^z4/(e^z4+e^z5+e^z6)a5 = e^z5/(e^z4+e^z5+e^z6)a6 = e^z6/(e^z4+e^z5+e^z6) 咱们以w41为例看看误差项(梯度)的传递:能够看出w41的误差延(梯度)图所示方向传递到Loss函数,这里最重要一点是,对于单个样本误差项(梯度)的传递只通过某一个输入神经元,由y-label值决定。比方,y=[1,0,0]那么梯度只通过a4神经元不通过a5,a6。这一点十分重要!因而咱们以一个样本为例反向求w41的误差项(梯度):这里的loss函数是广义的损失函数,是单个样本的损失函数。第一项和第三项都十分好求解,留神第一项外面的i,代表的是ylabel向量得第i个元素为1。重点就只声求解第二项了,依据式子能够凭数学敏感的晓得要分类求解: 第一类:i = 4如图求解如图: 第二类:i!=4 如图求解如图:综合起来对于单个样本梯度为:看通过如此简单的神经网络、softmax层、穿插熵损失函数,梯度居然示意一点也不简单仿佛只跟a4无关,甚至手动就能实现神经网络的更新如果把它看成概率,就会更好了解。 注意事项:1、单个样本问题:有很多教程都不会提到单个样本,上述自己多此提到单个样本条件下计算的后果。后面说过单个样本的损失函数是广义的损失函数,这里更是交叉了一个重要数学根据---随机梯度算法。单个样本好计算好剖析,但不要忘了他可能计算的数学根据就是随机梯度算法。单个样本的更新权重,比批度样本效率更高。2、softmax输入层的了解:后面也有通俗的提到过他的概率化作用,而我认为更重要的是为损失函数的建设提供了数学根据。另外一个作用就是输出层误差项的正则,只保留分类正确的概率的误差项传递,大大简化误差项的传递。3、softmax层和穿插熵损失函数不为一:并不是所有softmax层和穿插熵函数都长得一样,学生在查看不同教材就发现了多种不同的写法,但外围步骤保持一致。如图: 所以通知咱们最重要的不是表现形式,而是思维办法!前面会更新对于softmax层解决的代码

September 14, 2020 · 1 min · jiezi

关于神经网络:解决方案智能UI自动化测试

你的UI自动化追得上业务的变更和UI更迭吗?当今瞬息万变的时代,成千上万的App围绕着现代人生存的点点滴滴。为了满足用户的好的体验和时刻的新鲜感,这些App须要时刻放弃变动,也给 UI自动化落地施行带来了挑战。 1、自动化测试技术演进为了应答这些挑战,自动化测试技术也在不断更新迭代。从技术倒退的角度来看,自动化测试经验了四代。第一代:传统的“录制-回放”技术。这种技术模仿PC操作,记录键盘和鼠标的操作,对环境的依赖性太强,只有新版本的用户界面或性能产生扭转,以前录制的信息就不能用了,保护老本太高。第二代:脚本化的自动化测试。利用脚本进行结构化的自动化测试。测试脚本能够通过工具主动生成,也能够由测试开发人员手动开发实现。当软件性能产生变动时,测试脚本也须要同步更新。第三代:测试框架。次要是把测试脚本抽象化、模块化,包含数据驱动与关键字驱动,测试人员能够间接应用测试开发人员封装好的业务模块。编写出的自动化脚本也具备肯定的泛化性。我的项目的保护次要体现在业务模块封装或关键字形象等方面。第四代:AI自动化测试。在传统的自动化测试技术根底上,引入AI技术,次要想解决自动化测试中的高通用性、低应用门槛及低保护老本等自动化测试的难题。目前,AI自动化测试仍处在初期阶段,技术与办法的利用在一直地走向成熟。网易易测SmartAuto智能UI自动化测试平台或可代表以后AI自动化测试最前沿的实际利用。 2、UI自动化外围痛点网易团体的业务畛域极为丰盛,App利用数以百计。而网易易测由网易杭州研究院孵化,作为网易测试畛域基石,在打造全维度品质效力体系,助力业务腾飞方面,默默耕耘了10年,堪称经验了自动化测试技术演进的整个历程。针对UI自动化,网易易测总结了4个方面的痛点:准入门槛高:传统UI自动化框架须要编程根底,并且对测试框架有肯定把握,对测试人员技术能力要求较高。脚本保护艰难:团队内测试人员技术能力参差不齐,可能存在编码格调不对立,代码不标准等多种问题,导致多人合作保护难度大。脚本兼容性有余:传统编写形式如ID与Xpath受框架、布局与机型等因素影响较大,测试脚本往往须要进行针对性编写,导致兼容性有余,牵一发而动全身。业余机房搭建难度高:机房搭建专业性较高,如机柜设计、网络架设、设施自动化运维等,这些均对技术人员提出较高的要求。 3、SmartAuto-智能UI自动化面对这4大痛点,易测基于网易多年来积攒的测试实践经验,输入了基于人工智能的UI自动化测试工具SmartAuto,并围绕它提供残缺的挪动利用测试服务解决方案,领有从部署挪动设施机房到全面测试挪动利用的性能及性能的残缺能力。SmartAuto的外围能力是通过机器学习及图像识别技术实现智能控件辨认,通过自然语言的脚本编写形式无效升高了编写测试脚本的老本;而易测提供的挪动测试平台联合SmartAuto工具与机房能力,提供了整套基于人工智能的挪动测试解决方案,并提供了不同规模的机房服务体系的专属云解决方案,针对各种测试场景提供稳固的基础设施以及丰盛的专有云能力。SmartAuto与机房服务完满联合,打造多维度的云真机测试链路,笼罩挪动利用测试的全生命周期,同时提供性能专项采集等扩展性服务,助力交付高可用利用的同时,无效保障了利用的性能及稳定性。其次要外围个性如下: 3.1 SmartAuto外围个性智能易用UI 智能自动化工具 SmartAuto,具备业界独创的具备自主学习能力的控件辨认技术,可能精准定位并辨认UI元素,反对动静内容辨认、绝对元素定位等高鲁棒性的定位辨认伎俩。基于SmartAuto框架,测试工程师零代码编写自然语言的自动化脚本,大幅度提高了脚本可读性,同时升高了自动化测试的门槛,极大地节俭了人力和工夫老本。高效稳固易测平台提供的专有云机房服务体系,实用于私有云、公有云等不同的利用场景,具备无需部署开箱即用、定制化开发集成、高可用轻运维等特点。机房服务与SmartAuto高度集成,能够高效利用机器池,反对多设施智能并发测试。除对支流的自动化框架进行反对外,专有云服务还会提供真机调试、设施治理以及各种企业级定制能力,为平台提供高效稳固的挪动端测试能力保驾护航。全链路笼罩易测平台不仅可能提供兼顾功能测试和兼容性测试的外围服务,还提供了包含报告服务、性能专项采集等在内的根底服务和扩大服务。能够笼罩“编写脚本-云端提测-查看报告-近程调试”的挪动端利用全链路测试流程,实用于各种简单的测试场景。提供的测试报告包含利用维度的缺点汇总、详尽的性能数据以及联动式的测试信息展示。基于ADB或 SDK的性能工具能够精准获取挪动利用多维度的性能参数,深层次的定位各种性能及稳定性问题。 3.2 SmartAuto外围价值 上手 0 门槛,iOS/Android 设施均实现即插即用,随写随调自然语言测试用例可读性高,编写成本低,同时反对宏语法,便于公共操作形象,进一步提高用例可维护性用例执行高鲁棒性,前端构造变动无需更改用例适配执行集创立简略,反对智能并发、分组依赖治理,更高效更灵便网易易测在网易云音乐、网易严选、网易领取等多个利用收到了显著的成果,性能回归测试效率晋升90%,UI自动化线上巡检收益召回率达到85%。 回到开始的那个问题:“你的UI自动化追得上业务的变更和UI更迭吗?”,网易易测给出的答案是:YES。网易易测团队基于网易10年品质效力教训积攒,为企业提供测试治理、UI自动化测试、接口自动化测试、性能压测等整体解决方案,助力企业建立健全品质效力体系,欢送试用体验网易易测-全维度品质效力解决方案

September 8, 2020 · 1 min · jiezi

关于神经网络:激活函数-sigmoidtanhrelu

激活函数(activation functions)的指标是,将神经网络非线性化。激活函数是间断的(continuous),且可导的(differential)。 间断的:当输出值产生较小的扭转时,输入值也产生较小的扭转;可导的:在定义域中,每一处都是存在导数;常见的激活函数:sigmoid,tanh,relu。 sigmoidsigmoid是平滑(smoothened)的阶梯函数(step function),可导(differentiable)。sigmoid能够将任何值转换为0~1概率,用于二分类。细节能够参考。 公式: 导数: 导数2: 图(红色导函数,蓝色原函数): 当应用sigmoid作为激活函数时,随着神经网络隐含层(hidden layer)层数的减少,训练误差反而加大。体现为: 凑近输入层的隐含层梯度较大,参数更新速度快,很快就会收敛;凑近输出层的隐含层梯度较小,参数更新速度慢,简直和初始状态一样,随机散布;在含有四个暗藏层的网络结构中,第一层比第四层慢了靠近100倍!这种景象就是梯度弥散(vanishing gradient)。而另一种状况,梯度爆炸(exploding gradient),则是后面层的梯度,通过训练变大,导致前面层的梯度,以指数级增大。 因为sigmoid的导数值小于1/4,x变动的速率要快于y变动的速率,随着层数的减少,连续不断执行sigmoid函数,就会导致,后面更新较大的幅度,前面更新较小的幅度,因而,网络在学习过程中,更偏向于,更新前面(凑近输入层)的参数,而不是后面的参数(凑近输出层)。 sigmoid毛病: 激活函数的计算量较大,在反向流传中,当求误差梯度时,求导波及除法;在反向流传中,容易就会呈现梯度隐没,无奈实现深层网络的训练;函数的敏感区间较短,(-1,1)之间较为敏感,超过区间,则处于饱和状态,参考1、参考2 tanhtanh,即双曲正切(hyperbolic tangent),相似于幅度增大sigmoid,将输出值转换为-1至1之间。tanh的导数取值范畴在0至1之间,优于sigmoid的0至1/4,在肯定水平上,加重了梯度隐没的问题。tanh的输入和输出可能放弃非线性枯燥回升和降落关系,合乎BP(back propagation)网络的梯度求解,容错性好,有界。 公式: 导数: 图(红色导函数,蓝色原函数): sigmoid和tanh: sigmoid在输出处于[-1,1]之间时,函数值变动敏感,一旦靠近或者超出区间就失去敏感性,处于饱和状态,影响神经网络预测的精度值;tanh的变动敏感区间较宽,导数值渐进于0、1,合乎人脑神经饱和的法则,比sigmoid函数提早了饱和期;tanh在原点左近与y=x函数模式相近,当激活值较低时,能够间接进行矩阵运算,训练绝对容易;tanh和sigmoid都是全副激活(fire),使得神经网络较重(heavy)。参考1、参考2、参考3 relurelu,即Rectified Linear Unit,整流线性单元,激活局部神经元,减少稠密性,当x小于0时,输入值为0,当x大于0时,输入值为x. 公式: 图: 导数: 图: relu比照于sigmoid: sigmoid的导数,只有在0左近,具备较好的激活性,而在正负饱和区的梯度都靠近于0,会造成梯度弥散;而relu的导数,在大于0时,梯度为常数,不会导致梯度弥散。relu函数在负半区的导数为0 ,当神经元激活值进入负半区,梯度就会为0,也就是说,这个神经元不会被训练,即稠密性;relu函数的导数计算更快,程序实现就是一个if-else语句;而sigmoid函数要进行浮点四则运算,波及到除法;relu的毛病: 在训练的时候,ReLU单元比拟软弱并且可能“死掉”。举例来说,当一个很大的梯度,流过ReLU的神经元的时候,可能会导致梯度更新到一种特地的状态,在这种状态下神经元将无奈被其余任何数据点再次激活。如果这种状况产生,那么从此所以流过这个神经元的梯度将都变成0。也就是说,这个ReLU单元在训练中将不可逆转的死亡,因为这导致了数据多样化的失落。 如果学习率设置得太高,可能会发现网络中40%的神经元都会死掉(在整个训练集中这些神经元都不会被激活)。通过正当设置学习率,这种状况的产生概率会升高。 在神经网络中,隐含层的激活函数,最好抉择ReLU。 对于RNN中为什么抉择tanh,而不是relu,参考。 作者:SpikeKing 链接:https://www.jianshu.com/p/857... 起源:简书 著作权归作者所有。商业转载请分割作者取得受权,非商业转载请注明出处。

July 19, 2020 · 1 min · jiezi

脑机接口技术将在下月重磅更新3GPP系标准成为唯一被认可的5G标准

行 业 要 闻 Industry   News ▲▲▲ 伊隆·马斯克在社交媒体上发表将于 8 月 28 日更新 「智能脑机接口设施」Neuralink 的进度,这次更新进度将会有让人震惊的音讯。 Neuralink 成立于 2016 年 7 月,作为马斯克参加创建的最神秘的公司,其公开的使命是研发人脑和电脑之间的脑机接口界面,把人脑和电脑连接起来,让患者通过智能手机或计算机,用本人的意识来管制一些设施,以复原感觉和静止性能,医治大脑和神经系统疾病。 7月8日,谷歌发表将成立一个名为 Open Usage Commons(OUC)的新组织,托管其三个重要开源我的项目商标 Angular、Gerrit 和 Istio。 只管目前 OUC 只涵盖三个谷歌我的项目,但其目标是为开源我的项目提供一个中立的、独立的我的项目商标。该组织还将帮助统一化测试,建设标记使用指南,并解决商标应用问题。 OUC 不会提供超出应用范畴的服务,如技术领导、社区治理、我的项目事件或我的项目营销。 随同着愈演愈烈的“Black Lives Matter”静止,Linus Torvalds 本周五批准在 Linux 内核代码和文档中启用全新的术语,以让整个生态更具包容性。而且,Torvalds 还呐喊 Linux 开发者尽量应用新术语来代替“master/slave”、“blacklist/whitelist”。 Linux团队当初曾经退出了许多科技公司和开源我的项目的行列,这些公司和我的项目曾经从他们的代码中删除了对带有种族色调的术语的援用,以取得更加中性和容纳的语言。这个名单包含Twitter、GitHub、、Microsoft、LinkedIn、Ansible、Splunk、Android、Go、MySQL、PHPUnit、Curl、OpenZFS、OpenSSL、JP Morgan等。 7月10日,国际电信联盟(ITU)无线通信部门(ITU-R)国内挪动通信工作组(WP 5D)第35次会议胜利落幕,会议确定3GPP系规范成为被ITU认可的5G规范。 本次会议是IMT-2020(即5G)技术评估过程的要害会议。在为期三周的会议期间,各主管部门和产业界代表,对包含3GPP 5G规范在内的7项候选技术标准进行了深入研究和剖析,最终造成论断: 3GPP系的5G规范成为被国际电联认可的IMT-2020国内挪动通信零碎规范。 7月9 日,立陶宛央行发行的数字货币 LBCoin 开始在网站上注册预售,23 日将正式发售。LBCoin 以 6 枚数字货币以及 1 枚物理银币组成,价格为 99 欧元,立陶宛将发行 24000 枚数字货币和 4000 枚银币。 ...

July 14, 2020 · 1 min · jiezi

xlnet

Autoregressive和Autoencoding假如输出序列为$(w_1,w_2,w_3,w_4,w_5)$。 Autoregressiveautoregressive模型应用前t-1个单词预测第t个单词,指标函数如下,$$\max_{\theta} \log p_{\theta}(\mathbf{x})=\sum_{t=1}^{T}\log p_{\theta}(x_t|\mathbf{x}_{<t})$$长处: =而非$\approx$,能够严格推到no discrependency思考被预测单词之间的依赖关系毛病: 不能同时思考双向信息(要么从左到右,要么从右到左)Autoencodingautoencoding模型,应用未被mask掉的单词预测被mask掉的单词,指标函数如下,$$\max_{\theta} \log p_{\theta}(\overline{\mathbf{x}})|\hat{\mathbf{x}})\approx\sum_{t=1}^T m_t \log p_{\theta}(x_t | \hat{\mathbf{x}}) $$其中,$\overline{\mathbf{x}}$示意句子中被mask掉的单词, $\hat{\mathbf{x}}$示意句子中没有被mask掉的单词。 $m_t$示意如果输出句子的第t个单词被mask掉,则为1,否则为0。 长处: 能同时思考双向信息毛病: Independent Assumption没有思考被mask掉的单词的相关性(即独自地思考被mask掉的单词);Training和Testing之间存在Discrependency(在训练时,输出有mask token,然而在预测时没有)。两种模型取其精华,去其糟粕。 改良 使Autoregressive model能够同时思考双向信息具体做法是应用Permutation Language Model。 对于长度为$T$的序列,有$T!$种排列。为了缩小计算复杂度,对所有的permutation进行采样,最初计算冀望。$$\max_{\theta}\mathbb{E}_{z\sim \mathcal{Z}_T}[\sum_{t=1}^{T}\log p_{\theta}(x_t | \mathbf{x}_{<t})]$$其中,$\mathcal{Z}_T$示意所有可能的permutation。训练时,还是应用一部分词去预测另一部分词,然而会思考相关性。在具体实现时,输出单词的程序是不扭转的,通过引入attention mask,起到permutation的成果。图2例如,对于一个输出$(x_1,x_2,x_3,x_4)$,对单词$x_3$进行预测,当permutation为$(x_3,x_2,x_4,x_1)$时,通过attention mask使得$h_3$只会思考$mem$,即求$p_{\theta}(x_3|mem)$;当permutation为$(x_2,x_4,x_3,x_1)$时,$h_3$会思考$mem$、$x_2$和$x_4$的信息,即求概率$p_{\theta}(mem,x_2,x_4)$。 target aware假如应用规范的softmax来示意next-token的散布,即给定前t-1个单词,第t的单词的概率 $p_\theta(x_{z_t}|\mathbf{x}_{z_{<t}})$,$$p_\theta(x_{z_t}=x|\mathbf{x}_{z_{<t}})=\frac{exp(e(x)^Th_{\theta}(\mathbf{x}_{z_{<t}}))}{\sum_{x^{'}}exp(e(x^{'})^Th_{\theta}(\mathbf{x}_{z_{<t}}))}$$其中,$h_{\theta}(\mathbf{x}_{z_{<t}})$示意permutation z种前t-1个单词的组成的序列的hidden representation。显然,$h_{\theta}(\mathbf{x}_{z_{<t}})$不蕴含predict word $x_{z_t}$的地位信息,这样就会造成在预测predict word的散布时,没有思考它在句子中的地位信息,从而使得如果两个不同的单词,在句子中的地位不同,然而在不同permutation中的地位雷同(sequence position不同然而factorization position雷同),则这两个单词预测的概率分布也会雷同。例如,存在两个不同的permutation $z^{(1)}$和$z^{(2)}$,满足$z^{(1)}_{<t}=z^{(2)}_{<t}=z_{<t}$,然而$z^{(1)}_t = i \neq j=z^{(2)}_t$,尽管单词$x_i$和$x_j$不同,然而却具备雷同的预测值,这显然是不正确的。为此,xlnet提出了target position aware next-token distribution。$$p_\theta(x_{z_t}=x|\mathbf{x}_{z_{<t}})=\frac{exp(e(x)^T g_{\theta}(\mathbf{x}_{z_{<t}},z_t))}{\sum_{x^{'}}exp(e(x^{'})^Tg_{\theta}(\mathbf{x}_{z_{<t}},z_t))}$$其中,$g_{\theta}(\mathbf{x}_{z_{<t}},z_t)$额定思考了taget position $z_t$。 地位信息接下来须要思考如何定义$g_{\theta}(\mathbf{x}_{z_{<t}},z_t)$。应用规范的transformer架构会有如下问题。 在预测单词$x_{z_t}$时,$g_{\theta}(\mathbf{x}_{z_{<t}},z_t)$该当晓得单词$x_{z_t}$的地位信息$z_t$然而不能晓得单词的内容;当预测单词$x_{z_j},(j>t)$,$g_{\theta}(\mathbf{x}_{z_{<t}},z_t)$须要晓得单词$x_{z_t}$的内容(因为单词$x_{z_t}$是单词$x_{z_j}$的上下文,对单词$x_{z_j}$预测时,须要晓得其上下文的内容)。这就产生了矛盾,举例来说。例如,输出序列为$(x_1,x_2,x_3,x_4)$,须要对$x_2$和$x_4$进行预测,此时permutation为(3,2,4,1)。当预测$x_2$,心愿模型只能晓得$x_2$的地位信息然而不能晓得$x_2$的内容,然而预测$x_4$又心愿晓得$x_2$的内容,即既不心愿$g_2$蕴含$x_2$的内容,又心愿$g_2$蕴含$x_2$的内容。这就产生了矛盾。图3 Two-Stream Self Attentionxlnet的解决办法是,应用两种hidden representation。 content representation $h_{\theta}(\mathbf{x}_{\leq t})$query representation $g_{\theta}(\mathbf{x}_{z_{<t}},z_t)$其中,content representation $h_{\theta}(\mathbf{x}_{\leq t})$与规范的transfomer中的hidden state一样,都编码了单词$x_{z_t}$本身的内容信息和其上下文的内容信息。query representation $g_{\theta}(\mathbf{x}_{z_{<t}},z_t)$蕴含单词$x_{z_t}$其上下文的内容信息和其地位信息。能够将这两种representation类比word2vec模型中的context embeding和target embedding。content representation $h_{\theta}(\mathbf{x}_{\leq t})$能够看作是单词$x_{z_t}$作为其它单词的上下文(context)时,应用的hidden state;query representation $g_{\theta}(\mathbf{x}_{z_{<t}},z_t)$能够看作是单词$x_{z_t}$作为被预测的token(target)时,应用的hidden state。如图4(c)所示,在输出层,$h^{(0)}$为单词的embedding,$g^{(0)}$为随机初始化的向量。图4图5图6query representaion和hidden representation在前向流传中的计算形式为$$g^{(m)}_{z_t}=Attention(Q=g^{(m-1)}_{z_t},KV=h^{(m-1)}_{z_{<t}};\theta)$$$$h^{(m)}_{z_t}=Attention(Q=h^{(m-1)}_{z_t},KV=h^{(m-1)}_{z_{\leq t}};\theta)$$如图4(c)所示在计算query representaion$g^{(m)}_{z_t}$时不会应用到单词本身的内容信息,对应的attention mask,其主对角线上的值为0;在计算hidden representaion$h^{(m)}_{z_t}$时,会应用到单词本身的内容信息,对应的attention mask,其主对角线上的值不为0。 ...

July 13, 2020 · 1 min · jiezi

RNN中的梯度消失和梯度爆炸

传统模式的RNN反向流传$$\begin{equation}S_t = f(UX_t+WS_{t-1})\tag{1}\end{equation}$$$$\begin{equation}O_t=g(VS_t)\tag{2}\end{equation}$$其中,$f$和$g$为激活函数,$U,W,V$为RNN的参数。假如$T$时刻的loss为$L_T$,则反向流传时传递到$t$时刻的对于$W$的梯度为,$$\begin{equation}[\frac{\partial L_T}{\partial W}]_t^T=\frac{\partial L_T}{\partial O_T}\frac{\partial O_T}{\partial S_T}(\Pi_{k=T-1}^{t-1}\frac{\partial S_{k+1}}{\partial S_k})\tag{3}\end{equation}$$ 求$S_k$对于$S_{k-1}$的偏导(对于矩阵的求导,能够参考矩阵求导),$$\begin{equation}\frac{\partial S_k}{\partial S_{k-1}}=\frac{\partial f(UX_k+WS_{k-1})}{\partial (UX_k+WS_{k-1})}\frac{\partial (UX_k+WS_{k-1})}{\partial S_{k-1}}=diag(f^{'}(UX_k+WS_{k-1}))W\tag{4}\end{equation}$$ 梯度隐没和梯度爆炸的起因RNN罕用的两种激活函数,sigmoid和tanh。如果抉择sigmoid函数作为激活函数,即$f(z)=\frac{1}{1+e^{-z}}$,其导数为$f^{'}(z)=f(z)(1-f(z))$,导数的取值范畴为0~0.25。如果抉择tanh作为激活函数,即$f(z)=\frac{e^z-e^{-z}}{e^z+e^{-z}}$,其导数为$f^{'}(z)=1-f(z)^2$,导数的取值范畴为0~1。并且RNN网络的同一层中,所有工夫步的$W$都是共享的。因而,入选用sigmoid或者tanh作为激活函数时,大多数时候$f^{'}(z)$都是大于0小于1的,如果W的值也是大于0小于1,在计算式(3)波及到屡次$f^{'}(z)$和$W$的屡次连乘,后果会趋于0,从而造成了梯度隐没的问题。如果W的值特地大,则屡次连乘后就会呈现梯度爆炸的问题。如果应用relu作为激活函数,即$f(z)=max(0,z)$,relu的导数在x>0时恒为1,肯定水平上能够缓解梯度隐没问题,然而如果W的值特地大,也会呈现梯度爆炸的问题。而且当$z<0$时,导数恒为0,会造成局部神经元无奈激活(可通过设置小学习率局部解决)。 不同之处DNN中梯度隐没和RNN梯度隐没意义不一样,DNN中梯度隐没的问题是:梯度在反向流传过程中,流传到低层的网络时,梯度会变得很小,这样低层网络的参数就不会更新,但高层网络是更新的;而RNN中的梯度隐没的问题是:工夫步$T$的梯度无奈传递到工夫步$t$($t<T$且$t$与$T$时刻相差较大),因而工夫步$t$在更新参数时,只会受到工夫步$T^{'}$的影响($t\leq T^{'}$,$t$与$T^{'}$相差不大),即RNN中的参数还是能够更新的,因为RNN中同一层的参数都是一样的,并不会呈现参数不更新的状况,然而没方法满足学习到长期依赖。如图,在工夫步1,更新参数时,依照公式3,应该思考梯度$$\begin{equation}\sum_{T=1}^{6}[\frac{\partial L_T}{\partial W}]_1^T\tag{5}\end{equation}$$然而通过多层反向流传后,梯度$[\frac{\partial L_6}{\partial W}]_1^6$和$[\frac{\partial L_5}{\partial W}]_1^5$可能会隐没,因而工夫步1的在更新参数$W$时,只思考了工夫步1、2、3、4这几个间隔它比拟近的工夫步,这也就导致了学习不到远距离的依赖关系。这与DNN的梯度隐没是不同的,因为RNN中的参数$W$还是能够更新的。因为,RNN同一层的参数是一样的,而MLP/CNN 中不同的层有不同的参数。最终,参数$W$更新的梯度为各个工夫步参数$W$的更新梯度之和。 LSTM在原始RNN的根底上,LSTM和GRU被提出,通过引入门控机制,肯定水平上缓解了梯度隐没的问题。引入门控的目标在于将激活函数导数的连乘变为加法。以LSTM为例,$$\begin{equation}c^{(t)}=f^{(t)}\odot c^{(t-1)}+i^{(t)}\odot\tilde{c}^{(t-1)}\tag{6}\end{equation}$$$$\begin{equation}h^{(t)}=o^{(t)}\odot \tanh(c^{(t)})\tag{7}\end{equation}$$假如时刻T的损失$L_T$,思考$L_T$对$c^{(t)}$求导,由式(6)和(7)可知有两条求导门路,别离为$L_T->c^{(t+1)}->c^{(t)}$和$L_T->h^{(t)}->c^{(t)}$。即,$$\begin{equation}\begin{aligned}\frac{\partial L_T}{\partial c^{(t)}}&=\frac{\partial L_T}{\partial c^{(t+1)}}\frac{\partial c^{(t+1)}}{\partial c^{(t)}}+\frac{\partial L_T}{\partial h^{(t)}}\frac{\partial h^{(t)}}{\partial c^{(t)}}\\&=\frac{\partial L_T}{\partial c^{(t+1)}}\odot f^{(t+1)}+\frac{\partial L_T}{\partial h^{(t)}}\odot o^{(t)}\odot (1-\tanh^2(c^{(t)}))\end{aligned}\tag{8}\end{equation}$$ $$\begin{equation}[\frac{\partial L_T}{\partial W_f}]_t=\frac{\partial L_T}{\partial c^{(t)}}\frac{\partial c^{(t)}}{W_f}\tag{9}\end{equation}$$$$\begin{equation}[\frac{\partial L_T}{\partial W_i}]_t=\frac{\partial L_T}{\partial c^{(t)}}\frac{\partial c^{(t)}}{W_i}\tag{10}\end{equation}$$留神到,当$f^{(t)}$为1时,即便第二项很小,t+1时刻的梯度依然能够很好地传导到上一时刻t。此时即便序列的长度很长,也不会产生梯度隐没的问题。当$f^{(t)}$为0时,即t时刻的cell 信息不会影响到t+1时刻的信息,此时在反向流传过程中,t+1时刻的梯度也不会传导到t时刻。因而forget gate $f^{(t)}$起到了管制梯度流传的瘦弱水平的作用。多层LSTM个别只采纳2~3层。 LSTM 中梯度的流传有很多条门路, 例如$c^{(t+1)}->c^{(t)}$这条门路上只有逐元素相乘和相加的操作,梯度流最稳固;然而其余门路,例如 $c^{(t+1)}->i^{(t+1)}->h^{(t)}->c^{(t)}$门路上梯度流与一般 RNN 相似,照样会产生雷同的权重矩阵和激活函数的导数的重复连乘,因而仍然会爆炸或者隐没。然而,正如式(8)~(9)所示,在计算$T$时刻的损失传递到$t$时刻对于$W_f$和$W_i$的梯度时,具备多个梯度流,且模式相似于$$\begin{equation}(a_1+a_2)(b1+b2+b3)(c_1+c_2)...\tag{10}\end{equation}$$即在反向流传过程中,梯度流是一种和的乘积的模式,因而能够了解为总的远距离梯度 = 各条门路的远距离梯度之和,即使其余远距离门路梯度隐没了,只有保障有一条远距离门路梯度不隐没,总的远距离梯度就不会隐没(失常梯度 + 隐没梯度 = 失常梯度)。因而 LSTM肯定水平上缓解了梯度隐没的问题,然而梯度爆炸问题任然可能产生,因为失常梯度 + 爆炸梯度 = 爆炸梯度。然而因为LSTM 的梯度流门路十分起伏,且和一般RNN相比多通过了很屡次激活函数(导数都小于 1),因而 LSTM 产生梯度爆炸的频率要低得多。实际中梯度爆炸个别通过梯度裁剪来解决。 ...

July 12, 2020 · 2 min · jiezi

关于深度神经网络DNN模型安全性的研究-非对抗下的真实威胁

6月29日-7月2日在西班牙召开的 International Conference on Dependable Systems and Networks (DSN 2020)会议上, 来自百度安全对于深度神经网络(DNN)模型安全性的研究Quantifying DNN Model Robustness to theReal-World Threats成功入选。在该文章中,百度安全研究员们建立了一套衡量深度神经网络面对真实存在于物理世界威胁时鲁棒性的标准化框架。百度安全希望通过这个研究呼吁业内将人工智能模型的面对威胁,特别是面对物理世界中的威胁时的表现纳入衡量模型的标准,携手工业界、学术界共同探索与建设安全的AI时代。 DSN是可信系统和网络的国际会议,是国际顶尖的计算机会议之一,具有广泛的影响力。DSN2020国际会议,共有285篇论文投稿,录用48篇,录取率仅为16.8%。DSN率先提出了系统可靠性和安全性研究之间的融合,并以其独具一格的眼光聚焦于意外和恶意网络攻击,使其成为引领增强当今各种计算系统和网络的鲁棒性最负盛名的国际会议,为百度安全分享在AI鲁棒性研究提供了一个完美的舞台。 深度学习模型容易受到对抗样本的恶意攻击,这在业内已不是新鲜事。对图像数据添加人类难以通过感官辨识到的细微扰动,便可“欺骗”模型,指鹿为马,甚至无中生有。为实施此类攻击,攻击者往往需要提取了解模型结构模型的架构、参数,继而利用特定算法针对性的生成“对抗样本”,诱导模型做出错误的,甚至攻击者预设的判别结果。 然而在面对应用在安全攸关场景下的商业模型(例如,人脸识别、语音识别、无人驾驶等领域)中,很少有机会让攻击者掌握如此多的信息。当下以Google、Amazon为代表的国内外知名科技公司将云计算的运作模式与人工智能深度融合,将人工智能技术作为一种云服务(AIaaS,人工智能即服务)提供给用户和合作伙伴,除Amazon等少数公司会告知模型算法,绝大多数公司仅向用户反馈调用结果。模型信息以及攻击者攻击变现手段的缺失,此类恶意攻击尚未在现实业务中大量出现。 但这并不意味着这些商业模型就固若金汤了。百度安全团队在DSN 2020上带来的最新研究成果表明,真实世界的环境因素对输入数据正常扰动(例如:亮度、对比度变化,摄像头的抖动等等)就足以对深度学习模型的分类或预测结果产生不一致。更为要命的是此类威胁在非对抗场景中与生俱来。而业内对此类威胁重视程度并不足,目前缺乏对此类威胁的合理定义,并且苦于无法有效地评估深度学习模型鲁棒性。如果持续忽略此类威胁,不仅会导致严重的安全事故,也会破坏整个人工智能生态应用的进程。如果说对抗样本的发现,将传统安全产业框架延伸至机器学习模型算法安全性的范畴,那么物理世界安全属性扰动带来的威胁,则令这个问题更加严峻和复杂。这意味着现有模型在不存在恶意攻击者情况下就可能自乱阵脚,AI系统在特定环境下,例如自动驾驶在雨雪天气,颠簸路面将丧失对城市交通、道路标识及车辆正确的识别能力。此类威胁还可延伸至金融认证、安全监控等领域,蕴含巨大的安全风险。建立有效的模型鲁棒性评估机制是打造真正安全可行的AI系统必不可少的基石。 图1:真实世界的环境因素对输入数据正常扰动 百度安全团队中的Zhenyu Zhong、Zhisheng Hu、XiaoweiChen博士创新性的提供了一个模型鲁棒性评估量化框架,如图2所示。首先基于现实世界的正常扰动定义了可能出现威胁的五大安全属性,分别是光照,空间变换,模糊,噪声和天气变化。并且针对不同的模型任务场景,制定了不同的评估标准,如非定向分类错误、目标类别错误分类到评估者设定的类别等标准。对于不同安全属性扰动带来的威胁,该框架采用了图像领域中广为接受的最小扰动的Lp-norm来量化威胁严重性以及模型鲁棒性。 图2:深度学习模型鲁棒性评估框架 百度安全团队在现场展示了不同学习任务模型 - - 包含13个开源图像分类模型、3个SOTA目标检测模型、3个商用云端黑盒模型,在面对不同安全属性下带来的威胁,以及不同评估标准下的鲁棒性测评。并且展示了同类型学习下,不同模型鲁棒性的横向比较。评测结果表明,物理世界威胁不但普遍存在,而且较小的扰动就足以触发。无论是目标检测模型还是云端黑盒模型,在各个安全属性扰动下,都会被成功欺骗。例如图3中所示,由于摄像头抖动带来的极小的motion blur就足以使实验中的3个目标检测模型产生误判。而这些目标检测模型常用于自动驾驶中。同样用于不良内容过滤的云端模型,添加轻微的噪声便足以绕过。 图3:目标检测模型以及云端模型鲁棒性对比 百度安全研究员还与参会学者一同探讨了百度安全针对物理世界威胁解决思路,包括针对特定安全场景选取不同模型框架、对抗训练强化模型提高深度学习模型鲁棒性等途径。此外,百度安全始终倡导通过新一代技术研发与开源,此文中的鲁棒性评估量化框架已与百度安全perceptron robustness benchmarking dataset一同应用于百度深度学习开源平台PaddlePaddle及当下主流深度学习平台,可高效地评估模型面对物理世界威胁的特征统计,同时也支持使用最新的生成方法构造恶意对抗样本数据集用于攻击全新的AI应用、加固业务AI模型,为模型安全性研究和应用提供重要的支持。 *点击链接查看视频分享https://v.qq.com/x/page/h3106...————————————————

June 30, 2020 · 1 min · jiezi

技术干货丨卷积神经网络之LeNet5迁移实践案例

摘要:LeNet-5是Yann LeCun在1998年设计的用于手写数字识别的卷积神经网络,当年美国大多数银行就是用它来识别支票上面的手写数字的,它是早期卷积神经网络中最有代表性的实验系统之一。可以说,LeNet-5就相当于编程语言入门中的“Hello world!”。华为的昇腾训练芯片一直是大家所期待的,目前已经开始提供公测,如何在昇腾训练芯片上运行一个训练任务,这是目前很多人都在采坑过程中,所以我写了一篇指导文章,附带上所有相关源代码。注意,本文并没有包含环境的安装,请查看另外相关文档。 环境约束:昇腾910目前仅配套TensorFlow 1.15版本。 基础镜像上传之后,我们需要启动镜像命令,以下命令挂载了8块卡(单机所有卡): docker run -it --net=host --device=/dev/davinci0 --device=/dev/davinci1 --device=/dev/davinci2 --device=/dev/davinci3 --device=/dev/davinci4 --device=/dev/davinci5 --device=/dev/davinci6 --device=/dev/davinci7 --device=/dev/davinci_manager --device=/dev/devmm_svm --device=/dev/hisi_hdc -v /var/log/npu/slog/container/docker:/var/log/npu/slog -v /var/log/npu/conf/slog/slog.conf:/var/log/npu/conf/slog/slog.conf -v /usr/local/Ascend/driver/lib64/:/usr/local/Ascend/driver/lib64/ -v /usr/local/Ascend/driver/tools/:/usr/local/Ascend/driver/tools/ -v /data/:/data/ -v /home/code:/home/local/code -v ~/context:/cache ubuntu_18.04-docker.arm64v8:v2 /bin/bash 设置环境变量并启动手写字训练网络: #!/bin/bashexport LD_LIBRARY_PATH=/usr/local/lib/:/usr/local/HiAI/runtime/lib64export PATH=/usr/local/HiAI/runtime/ccec_compiler/bin:$PATHexport CUSTOM_OP_LIB_PATH=/usr/local/HiAI/runtime/ops/framework/built-in/tensorflowexport DDK_VERSION_PATH=/usr/local/HiAI/runtime/ddk_infoexport WHICH_OP=GEOPexport NEW_GE_FE_ID=1export GE_AICPU_FLAG=1export OPTION_EXEC_EXTERN_PLUGIN_PATH=/usr/local/HiAI/runtime/lib64/plugin/opskernel/libfe.so:/usr/local/HiAI/runtime/lib64/plugin/opskernel/libaicpu_plugin.so:/usr/local/HiAI/runtime/lib64/plugin/opskernel/libge_local_engine.so:/usr/local/HiAI/runtime/lib64/plugin/opskernel/librts_engine.so:/usr/local/HiAI/runtime/lib64/libhccl.so export OP_PROTOLIB_PATH=/usr/local/HiAI/runtime/ops/built-in/ export DEVICE_ID=2export PRINT_MODEL=1#export DUMP_GE_GRAPH=2 #export DISABLE_REUSE_MEMORY=1#export DUMP_OP=1#export SLOG_PRINT_TO_STDOUT=1 export RANK_ID=0export RANK_SIZE=1export JOB_ID=10087export OPTION_PROTO_LIB_PATH=/usr/local/HiAI/runtime/ops/op_proto/built-in/export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/Ascend/fwkacllib/lib64/:/usr/local/Ascend/driver/lib64/common/:/usr/local/Ascend/driver/lib64/driver/:/usr/local/Ascend/add-ons/export PYTHONPATH=$PYTHONPATH:/usr/local/Ascend/opp/op_impl/built-in/ai_core/tbeexport PATH=$PATH:/usr/local/Ascend/fwkacllib/ccec_compiler/binexport ASCEND_HOME=/usr/local/Ascendexport ASCEND_OPP_PATH=/usr/local/Ascend/oppexport SOC_VERSION=Ascend910 rm -f *.pbtxtrm -f *.txtrm -r /var/log/npu/slog/*.logrm -rf train_url/* python3 mnist_train.py以下训练案例中我使用的lecun大师的LeNet-5网络,先简单介绍LeNet-5网络: ...

June 24, 2020 · 2 min · jiezi

rbf网络原理及实现

RBF网络实验流程from graphviz import Digraphdot = Digraph(comment = 'The Round Table')dot.node('A',"RBF网络理论理解")dot.node('B',"结合数据组织RBF网络")dot.node('C',"代码实现")dot.node('D',"问题以及解决方法")dot.node('E',"感想和体会")dot.edges(["AB","BC","CD","DE"])dot RBF网络理解rbf网络在我看来应该是一个可以解决函数拟合问题的网络,与之前学的的adaline相比,rbf网络可以做非线性可分的问题,与bp网络相比,rbf网络只有一层隐藏层,计算方便,而且不太会陷入bp网络中常有的局部最优的情况rbf网络应该是以cover定理以及插值定理上建立起来的网络,在cover定理里,揭示了低维度不可分的样本点在高纬度可分的性质,在插值定理里,揭示了如何利用高维度可分的性质完成函数拟合的问题。rbf网络实现的关键是在rbf函数的中心点以及宽度高度调整上,在实现代码的时候围绕这个关键点进行处理结合数据组织RBF网络在本题中使用的数据仍然是双月数据,所以问题的关键是在双月数据中寻找关键点因为我还不是很理解如何利用全局梯度下降调整径向基函数的中心点,宽度,和高度,所以我选择了使用中心自组织的方法进行rbf网络的构建代码实现代码实现逻辑from graphviz import Digraphdot = Digraph(comment = 'The Round Table')dot.node('A',"相关包导入")dot.node('B',"导入相关数据并展示")dot.node('C',"定义高斯函数,误差函数,以及欧拉距离的计算函数")dot.node('D',"利用kmeans算法确定中心点以及宽度")dot.node('E',"训练调整rbf网络高度")dot.node('F',"决策面展示")dot.edges(["AB","BC","CD","DE","EF"])dot 具体代码# 相关包导入import numpy as npimport matplotlib.pyplot as pltimport mathLEARNING_RATE = 0.45 # 学习率def halfmoon(rad, width, d, n_samp): '''生成半月数据 @param rad: 半径 @param width: 宽度 @param d: 距离 @param n_samp: 数量 ''' if n_samp%2 != 0: # 确保数量是双数 n_samp += 1 data = np.zeros((3,n_samp)) # 生成0矩阵,生成 3行 n_samp列的的矩阵 aa = np.random.random((2,int(n_samp/2))) radius = (rad-width/2) + width*aa[0,:] theta = np.pi*aa[1,:] x = radius*np.cos(theta) y = radius*np.sin(theta) label = np.ones((1,len(x))) # label for Class 1 x1 = radius*np.cos(-theta) + rad # 在x基础之上向右移动rad个单位 y1 = radius*np.sin(-theta) + d # 在y取相反数的基础之上向下移动d个单位 label1= 0*np.ones((1,len(x1))) # label for Class 2 data[0,:]=np.concatenate([x,x1]) data[1,:]=np.concatenate([y,y1]) data[2,:]=np.concatenate([label,label1],axis=1) # 合并数据 return datadataNum = 1000data = halfmoon(10,5,5,dataNum)np.savetxt('halfmoon.txt', data.T,fmt='%4f',delimiter=',')# 导入相关数据并展示def load_data(file): # 读入数据 x = [] y = [] with open(file, 'r') as f: lines = f.readlines() for line in lines: line = line.strip().split(',') x_item = [float(line[0]), float(line[1])] # x_item存储 x,y值 y_item = float(line[2]) # y_item存储 z值(期望值) x.append(x_item) y.append(y_item) return np.array(x), np.array(y)# x,y值和z值(期望值),分别被x和y分别存储file="E:\\data\\temp\\workspace\\net_exp3\\adaline_fix\\halfmoon.txt"INPUTS,OUTPUTS = load_data(file) # 取得x,y值和z值(期望值)# 对数据进行画图x_aixs = INPUTS[:,0]y_aixs = INPUTS[:,1]neg_x_axis = x_aixs[OUTPUTS==0]neg_y_axis = y_aixs[OUTPUTS==0]pos_x_axis = x_aixs[OUTPUTS==1]pos_y_axis = y_aixs[OUTPUTS==1]plt.figure()plt.scatter(neg_x_axis,neg_y_axis,c="b",s=10)plt.scatter(pos_x_axis,pos_y_axis,c="g",s=10)plt.show()# 训练数据生成(通过打乱原始数据顺序进行训练数据的生成)data = []for i in range(len(INPUTS)): data.append([INPUTS[i][0],INPUTS[i][1],OUTPUTS[i]])trainData = []tmp = []for i in range(1000): tmp.append(i)np.random.shuffle(tmp)for i in range(len(tmp)): trainData.append(data[tmp[i]])# 定义高斯函数,误差函数,以及欧拉距离的计算函数def GaussianFun(center,input,variance): distance = math.sqrt(math.pow((input[0]-center[0]),2)+math.pow((input[1]-center[1]),2)) GaussianOut = math.exp(-0.5*(1/math.pow(variance,2)*math.pow(distance,2))) return GaussianOutdef ErrorFun(Error): Error_sum = 0 for i in Error: Error_sum+=math.pow(i,2) Error_sum = Error_sum/2 return Error_sumdef Distance(center,input): distance = math.sqrt(math.pow((input[0]-center[0]),2)+math.pow((input[1]-center[1]),2)) return distance 利用kmeans算法确定中心点以及宽度在这里先通过调库生成初始的中心点# kmeans 确定rbf中心点hidGradation_nodeNum = 10 # 隐藏层节点数设置为10个# 生成随机中心centerNum = hidGradation_nodeNum # 设定的中心数from sklearn.cluster import KMeansclusterData = []for i in trainData: clusterData.append([i[0],i[1]])clusterData = np.array(clusterData)kmeans = KMeans(n_clusters=hidGradation_nodeNum,random_state=0).fit(clusterData)center = []for i in kmeans.cluster_centers_: center.append(list(i))# 这里确定的是,初始的中心在调库生成初始中心点的基础之上,利用代价函数对中心进行迭代处理$$J(C) = \frac{1}{2}\sum^k_{j=1}\sum_{C(i)=j}\|x_i-u_j\|^2$$ ...

June 4, 2020 · 3 min · jiezi

激活函数

引言在学习神经网络的过程中总会听到激活函数(激励函数),激活函数是神经网络中非线性的来源,如果去掉这些激活函数,那神经网络只剩下线性运算,那最终的效果就相当于单层的线性模型,本文主要从以下几个方面来讲解激活函数: 激活函数是什么激活函数的分类以及特点如何选择合适的激活函数激活函数是什么首先要先了解神经网络的基本模型(不熟悉的可以去看本文另一篇文章:神经网络介绍)单一神经网络模型如图所示:SUM代表神经元,xi代表输入层,wi代表权值,t代表输出层,输入乘以对应的权值输入到神经元,并传递到输出层,在输入和输出之间具有一个函数关系f,这个函数称为激活函数(激励函数)。 激活函数的分类和特点Sigmoid函数Sigmoid是常用的非线性激活函数,数学形式如下所示: $$f(z) = \frac{1}{1+ e^{-z}} $$ 几何图像及其导数如图所示:特点:1、在于输出范围有限[0,1],数据在传递过程中不容易发散2、可以在输出层表示概率值。缺点:1、输出不是zero-centered2、梯度下降非常明显,并且两头过于平坦,容易出现梯度消失的情况,这是因为Sigmoid导数小于0.25,在进行反向传播时,梯度相乘会慢慢趋近0,还有就是输出的值域不对称。3、数学表达式中含有幂运算,对于规模大的深度网络,会较大地增加训练时间。4、左端趋于0,右端趋于1,两端均趋于饱和。 双曲正切函数(tanh)数学形式如下所示: $$tanh(x) =\frac{e^{x}-e^{-x}}{e^{x}+e^{-x}}$$ tanh(x)函数及其导数如下图所示: 特点:1、将数据映射到[-1,1],解决了Sigmoid函数输出值域不对称问题。2、完全可以可微分和反对称的,对称中心在原点,输出为zero-centered。缺点:1、输出值域两头依旧平坦,梯度消失问题仍然存在。2、依然是指数运算3、两端均趋于饱和 ReLU函数ReLu函数是目前神经网络里常用的激活函数,数学形式如下所示: $$f(x)=relu(x)=max(x,0)$$ 几何图像及其导数如下图所示:左边图为ReLU函数图像,可以看到,在负半轴函数值为0,正半轴是个线性函数特点:1、在正半轴是线性的,所以在正半轴没有梯度饱和的现象出现;2、收敛速度比Sigmoid、Tanh更快;3、计算更加高效,只需要一个阈值就可以得到激活值。缺点:1、ReLU的输出不是zero-centered;2、Dead ReLU Problem,就是说是“死亡神经元”,也就是指某些神经元永远不会被激活,导致相应的参数不能被更新。导致这种情况原因主要有两个:(1)参数初始化,这种情况比较少。(2)leaning rate太高导致训练过程中参数更新太大,不幸使网络进入这种状态,可以使用Xavier初始化方法解决,或者使用adagrad等自动调节learning rate的算法。总结虽说ReLU存在这两个问题,但仍是目前最常用的激活函数,这是因为其非线性比较弱,而神经网络一般比较深,因为更深的网络的泛化能力更好。 带泄露修正线性神经元(Leaky ReLU函数(PReLU))数学表达式为: $$f(x)=\\{{\alpha x,\x<0 \\atopx,\x\geq0}$$ 几何图像如下图所示:特点:1、解决Dead ReLU Problem问题,将relu的前半部分设为$\alpha$x,$\alpha$通常为0.01。2、不管输入小于0还是 大于0,均不会出现饱和现象。3、由于是线性,不管前向传播,还是反向传播,计算速度比较快缺点:1、$\alpha$需要人工赋值。总结Leaky ReLU拥有ReLU所有优点,外加不会有Dead ReLU Problem问题,但实际操作用,没有完全证明Leaky ReLU总是优于ReLU。 ELU(Exponential Linear Units)函数数学表达式为: $$f(x)=\\{{x,\x>0 \\atop\alpha (e^{x}-1),\otherwise}$$ 图像及其导数的图像如下所示:特点:1、类似于Leaky ReLU,且具有ReLU所有优点;2、解决Dead ReLU Problem 问题3、输出均值接近于0缺点:1、计算时是需要计算指数,因此计算量比较大。 MaxOut函数Maxout “Neuron” 是一种很有特点的神经元,它的激活函数、计算的变量、计算方式和普通的神经元完全不同,并有两组权重。先得到两个超平面,再进行最大值计算。MaxOut层的每个神经元的计算公式如下: $$f_{i}(x)=max_{j\in[1,k]}z_{ij}$$ i表示第i个神经元,k代表MaxOut层所需要的参数,人为设定大小,其中$z_{ij}$=$x^TW_{...ij}+b_{ij}$,我们假定k为1,i也为1,w是两维的,那么可以得出如下公式: $$f(x)=max(w_{1}^Tx+b_{1},w_{2}^Tx+b_{2})$$ 可以这样理解,传统MLP算法在第一层到第二层,参数只有一组,为$wx+b$,现在我们同时训练两组,然后选择激活值最大的,这个$max(z)$就充当了激活函数。特点:1、具有ReLU所有优点2、能够解决Dead ReLU Problem问题缺点:1、每个神经元将有两组w,参数增加一倍,导致整体参数数量激增。 如何选择合适的激活函数这个问题没有确定的办法,看实际情况1、一般情况下,不要在一个网络中混着使用不同的激活函数2、深度学习通常需要大量的时间进行数据处理,那么收敛速度就很重要,训练深度网络尽量使用具有输出zero-centered特点的激活函数用于加快收敛速度。3、如果使用ReLU,需要注意learning rate,不要让网络中出现过多的死亡神经元,如果死亡神经元过多,可以试试Leaky ReLU ,MaxOut。4、少用Sigmoid,可以试试Tanh,不过效果应该没有ReLU和MaxOut好。

May 27, 2020 · 1 min · jiezi

不可忽视的这一种Dynamic-ReLUAdaptively-Parametric-ReLU调参记录10

Adaptively Parametric ReLU是一种动态ReLU(Dynamic ReLU),于2019年5月3日投稿至IEEE Transactions on Industrial Electronics,于2020年1月24日录用,于2020年2月13日在IEEE官网公布。本文在调参记录9的基础上,在数据增强部分增加了shear_range = 30,测试Adaptively Parametric ReLU(APReLU)激活函数在Cifar10图像集上的效果。 Keras里ImageDataGenerator的用法见如下网址:https://fairyonice.github.io/... Adaptively Parametric ReLU的基本原理见下图: Keras程序如下: #!/usr/bin/env python3# -*- coding: utf-8 -*-"""Created on Tue Apr 14 04:17:45 2020Implemented using TensorFlow 1.0.1 and Keras 2.2.1Minghang Zhao, Shisheng Zhong, Xuyun Fu, Baoping Tang, Shaojiang Dong, Michael Pecht,Deep Residual Networks with Adaptively Parametric Rectifier Linear Units for Fault Diagnosis, IEEE Transactions on Industrial Electronics, 2020, DOI: 10.1109/TIE.2020.2972458,Date of Publication: 13 February 2020@author: Minghang Zhao"""from __future__ import print_functionimport kerasimport numpy as npfrom keras.datasets import cifar10from keras.layers import Dense, Conv2D, BatchNormalization, Activation, Minimumfrom keras.layers import AveragePooling2D, Input, GlobalAveragePooling2D, Concatenate, Reshapefrom keras.regularizers import l2from keras import backend as Kfrom keras.models import Modelfrom keras import optimizersfrom keras.preprocessing.image import ImageDataGeneratorfrom keras.callbacks import LearningRateSchedulerK.set_learning_phase(1)# The data, split between train and test sets(x_train, y_train), (x_test, y_test) = cifar10.load_data()x_train = x_train.astype('float32') / 255.x_test = x_test.astype('float32') / 255.x_test = x_test-np.mean(x_train)x_train = x_train-np.mean(x_train)print('x_train shape:', x_train.shape)print(x_train.shape[0], 'train samples')print(x_test.shape[0], 'test samples')# convert class vectors to binary class matricesy_train = keras.utils.to_categorical(y_train, 10)y_test = keras.utils.to_categorical(y_test, 10)# Schedule the learning rate, multiply 0.1 every 300 epochesdef scheduler(epoch): if epoch % 300 == 0 and epoch != 0: lr = K.get_value(model.optimizer.lr) K.set_value(model.optimizer.lr, lr * 0.1) print("lr changed to {}".format(lr * 0.1)) return K.get_value(model.optimizer.lr)# An adaptively parametric rectifier linear unit (APReLU)def aprelu(inputs): # get the number of channels channels = inputs.get_shape().as_list()[-1] # get a zero feature map zeros_input = keras.layers.subtract([inputs, inputs]) # get a feature map with only positive features pos_input = Activation('relu')(inputs) # get a feature map with only negative features neg_input = Minimum()([inputs,zeros_input]) # define a network to obtain the scaling coefficients scales_p = GlobalAveragePooling2D()(pos_input) scales_n = GlobalAveragePooling2D()(neg_input) scales = Concatenate()([scales_n, scales_p]) scales = Dense(channels, activation='linear', kernel_initializer='he_normal', kernel_regularizer=l2(1e-4))(scales) scales = BatchNormalization(momentum=0.9, gamma_regularizer=l2(1e-4))(scales) scales = Activation('relu')(scales) scales = Dense(channels, activation='linear', kernel_initializer='he_normal', kernel_regularizer=l2(1e-4))(scales) scales = BatchNormalization(momentum=0.9, gamma_regularizer=l2(1e-4))(scales) scales = Activation('sigmoid')(scales) scales = Reshape((1,1,channels))(scales) # apply a paramtetric relu neg_part = keras.layers.multiply([scales, neg_input]) return keras.layers.add([pos_input, neg_part])# Residual Blockdef residual_block(incoming, nb_blocks, out_channels, downsample=False, downsample_strides=2): residual = incoming in_channels = incoming.get_shape().as_list()[-1] for i in range(nb_blocks): identity = residual if not downsample: downsample_strides = 1 residual = BatchNormalization(momentum=0.9, gamma_regularizer=l2(1e-4))(residual) residual = aprelu(residual) residual = Conv2D(out_channels, 3, strides=(downsample_strides, downsample_strides), padding='same', kernel_initializer='he_normal', kernel_regularizer=l2(1e-4))(residual) residual = BatchNormalization(momentum=0.9, gamma_regularizer=l2(1e-4))(residual) residual = aprelu(residual) residual = Conv2D(out_channels, 3, padding='same', kernel_initializer='he_normal', kernel_regularizer=l2(1e-4))(residual) # Downsampling if downsample_strides > 1: identity = AveragePooling2D(pool_size=(1,1), strides=(2,2))(identity) # Zero_padding to match channels if in_channels != out_channels: zeros_identity = keras.layers.subtract([identity, identity]) identity = keras.layers.concatenate([identity, zeros_identity]) in_channels = out_channels residual = keras.layers.add([residual, identity]) return residual# define and train a modelinputs = Input(shape=(32, 32, 3))net = Conv2D(16, 3, padding='same', kernel_initializer='he_normal', kernel_regularizer=l2(1e-4))(inputs)net = residual_block(net, 9, 16, downsample=False)net = residual_block(net, 1, 32, downsample=True)net = residual_block(net, 8, 32, downsample=False)net = residual_block(net, 1, 64, downsample=True)net = residual_block(net, 8, 64, downsample=False)net = BatchNormalization(momentum=0.9, gamma_regularizer=l2(1e-4))(net)net = Activation('relu')(net)net = GlobalAveragePooling2D()(net)outputs = Dense(10, activation='softmax', kernel_initializer='he_normal', kernel_regularizer=l2(1e-4))(net)model = Model(inputs=inputs, outputs=outputs)sgd = optimizers.SGD(lr=0.1, decay=0., momentum=0.9, nesterov=True)model.compile(loss='categorical_crossentropy', optimizer=sgd, metrics=['accuracy'])# data augmentationdatagen = ImageDataGenerator( # randomly rotate images in the range (deg 0 to 180) rotation_range=30, # shear angle in counter-clockwise direction in degrees shear_range = 30, # randomly flip images horizontal_flip=True, # randomly shift images horizontally width_shift_range=0.125, # randomly shift images vertically height_shift_range=0.125)reduce_lr = LearningRateScheduler(scheduler)# fit the model on the batches generated by datagen.flow().model.fit_generator(datagen.flow(x_train, y_train, batch_size=100), validation_data=(x_test, y_test), epochs=1000, verbose=1, callbacks=[reduce_lr], workers=4)# get resultsK.set_learning_phase(0)DRSN_train_score = model.evaluate(x_train, y_train, batch_size=100, verbose=0)print('Train loss:', DRSN_train_score[0])print('Train accuracy:', DRSN_train_score[1])DRSN_test_score = model.evaluate(x_test, y_test, batch_size=100, verbose=0)print('Test loss:', DRSN_test_score[0])print('Test accuracy:', DRSN_test_score[1])实验结果如下: ...

May 25, 2020 · 52 min · jiezi