DQN实现机器人自动走迷宫
问题简介
如上图所示,左上角的红色椭圆既是起点也是机器人的初始位置,右下角的绿色方块是出口。游戏规则为:从起点开始,通过错综复杂的迷宫,到达目标点(出口)。
在任一位置可执行动作包括:向上走 'u'、向右走 'r'、向下走 'd'、向左走 'l'。
执行不同的动作后,根据不同的情况会获得不同的奖励,具体而言,有以下几种情况。
撞墙
走到出口
其余情况
我们分别实现了基于基础搜索算法和 Deep QLearning 算法的机器人,使机器人自动走到迷宫的出口。
设计思想Maze 类介绍创建迷宫通过迷宫类 Maze 可以随机创建一个迷宫。
使用 Maze(maze_size=size) 来随机生成一个 size * size 大小的迷宫。
使用 print() 函数可以输出迷宫的 size 以及画出迷宫图
红色的圆是机器人初始位置
绿色的方块是迷宫的出口位置
""" 创建迷宫并展示 """
maze = Maze(maze_size=10) # 随机生成 ...
文献笔记:Playing Atari with Deep Reinforcement Learning
Abstract这篇提出了第一个深度学习模型,成功地直接从高维输入学习控制策略的强化学习。该模型是一个卷积神经网络,使用Q-learing的变体训练,其输入是原始像素,输出是估计未来奖励的Value函数。该方法在七款街机游戏中取得了不错的效果
Background学习高维度信息比如视觉和语音是强化学习的一大挑战,这样的强化学习非常依赖于数据(特征工程)的质量,而深度学习方法可以很好地提取高维度特征简单来说深度神经网络可以看做一个可以拟合任何复杂函数的工具,只要网络的深度足够大,但是深度学习需要大量人工标注的数据,而且深度学习假设所有数据是独立同分布的,而强化学习的数据来自于环境,且随环境进行变化。在这篇文章中,作者用卷积神经网络,从复杂的RL环境中的原始视频数据中学习成功的控制策略。该网络用q-学习算法的一个变体进行训练,通过随机梯度下降来更新权值。
environment在Atari game中我们考虑一个agent与环境$\epsilon$交互的过程,用一个向量$xt$表示当前屏幕显示的图像的像素值,动作(action)定义为当前玩家可以采取的操作,奖励(reward)定义为游戏得 ...
Eigenface
问题背景特征脸(eigenface)是第一种有效的人脸识别方法,通过在一大组描述不同人脸的图像上进行主成分分析(PCA),其本质是用一种称为“特征人脸(eigenface)”的特征向量按照线性组合形式来表达每一张原始人脸图像,进而实现人脸识别。为了提高准确率,我们尽可能取出其中含有信息较多(即方差较大)的坐标轴(基),构成(span)一个新的空间,舍弃其他维度的信息。由于新空间的维度小于原来的空间,所以把数据投影到新的空间后,可以大大降低数据的复杂度(虽然会损失少量信息)。
设计思想首先我们需要把所有二维的人脸squeeze为一个一维的向量,$row\times col \to 1\times (row\times col)$,然后进行如下算法。
输入: n个1024维人脸样本数据所构成的矩阵X,降维后的维数l
输出:映射矩阵$W = {w_1,w_2,…,w_l}$ (其中每个$w_j(1≤ j ≤ l)$是一个特征人脸
算法步骤
对于每个人脸样本数据$xi$进行中心化处理: $x_i = x_i -\mu$,$\mu=\frac{1}{n}\sum{j=1}^nx_j$
...
蒙特卡洛搜索实现黑白棋
问题重述黑白棋简介黑白棋(Reversi),也叫翻转棋,是一款经典的策略游戏。
一般棋子双面为黑白两色,故称“黑白棋”。因为行棋之时将对方棋子翻转,则变为己方棋子,故又称“翻转棋” (Reversi) 。
它使用 8x8 的棋盘,由两人执黑子和白子轮流下棋,最后子多方为胜方。
游戏规则开始时,黑棋位于D5和E4,白棋位于D4和E5.一个合法的落子:
在空处落子、并翻转对手一个或多个棋子
新落子位置必须在可以夹住对方的位置上、对方被夹住的棋子翻转。可以是横着夹、竖着夹、对角线夹
任何被夹住的棋子必须被反过来如果一方没有合法棋步,也就是无论他下在哪里,都无法翻转对方的棋子了,这一轮只能弃权棋局持续知道棋盘填满或双方都没有合法棋步可下如果一方落子时间超过1min,或者连续三次落子不合法,则判断该方失败
棋盘类介绍初始化棋盘棋盘规格是 8x8,’X’ 代表黑棋,’O’ 代表白棋,’.’ 代表未落子状态。
棋盘初始化 - 利用 Board 类(board.py)中的 display() 方法展示棋盘:
导入棋盘文件from board import Board
初始化棋盘board = Bo ...
算法岗白给面经整理
寒假时开始考虑要不要去找暑期实习,因为今年去找暑研面临着比较大的不确定性,而且对于找暑研,寒假显然已经不算早了,几番思想斗争后就明确放弃找暑研,选择去找份实习,不过寒假实在是太摸鱼,leetcode也没写几道,科研也动的不多,倒是文明6可以全文明神标200T内飞天了。
三月初开学其实已经有不少同学拿到日常实习的offer了,暑期的提前批差不多刚开始,但此时我对整个过程还了解甚少,在投岗位时就面临了很大的困境,如果选择开发岗,整体要求会低一点,本科生容易一点,但自己其实相关实战经验很少,OS和计网两门课都欠缺,而且java相关的岗位会多一点,如果选择算法,其实暑期实习是和研二的学生直接竞争,少部分公司会把算法的门槛直接拉到研究生,所以很可能过不了简历关,而且按知乎的论调基本是车毁人亡。
最后基本是算法,后端,大数据混投了,以算法为主,其实不太建议这样,实习显然是
专精选手>自由人
不过在被社会暴打之前我基本是在乱来,也没啥经验,然后就开始了一路白给的过程
第一次面试-字节AML字节AML是第一个投的日常,也是比较想去的部门,部门主要以CPP和Python为主,技术栈也比较 ...
深度学习激活函数和优化
BatchNormalization的作用神经网络在训练的时候随着网络层数的加深,激活函数的输入值的整体分布逐渐往激活函数的取值区间上下限靠近,从而导致在反向传播时低层的神经网络的梯度消失。而BatchNormalization的作用是通过规范化的手段,将越来越偏的分布拉回到标准化的分布,使得激活函数的输入值落在激活函数对输入比较敏感的区域,从而使梯度变大,加快学习收敛速度,避免梯度消失的问题。
激活函数激活函数的作用如果不用激励函数(其实相当于激励函数是f(x) = x),在这种情况下你每一层节点的输入都是上层输出的线性函数,很容易验证,无论你神经网络有多少层,输出都是输入的线性组合,与没有隐藏层效果相当,那么网络的逼近能力就相当有限。正因为上面的原因,我们决定引入非线性函数作为激励函数,这样深层神经网络表达能力就更加强大(不再是输入的线性组合,而是几乎可以逼近任意函数)。
常见的激活函数
激活函数特点
Sigmoid函数
梯度消失问题:Sigmoid函数造成梯度消失的主要原因在于,一般来说输入是介于[0,1]之间,而Sigmoid的导数在[0,1]的定义域内的值域为[0.2,0.2 ...
文明6(和而不同mod)老秦巨贪流战报(神标地球)
寒假拿黄金时代mod完了很久,但最后感觉效果过于imba,比如佩特拉全城加,简直无敌,太爽而且区域规划不太喜欢,偶尔在b站发现D大佬正在制作的文明6Plus和而不同版本(Harmony in Diversity),感觉理念非常认同,和而不同主要改动如下:
总督老马环游直接取消,砍树收益变低。
宗教信条大改,发教更加容易
每个城市要求玩家根据地貌修建不同区域来取得最大收益
除了纪念碑,粮仓,磨坊,新增了更多的市中心一级建筑,分别加锤,瓶,琴,鸽,钱
每个城市新增城市政策,发展差异化
游戏设置:
难度:神
地图:Yamp定制地图,类地球
模式:垄断与公司,蛮族新模式(无英雄,无结社)
文明:老秦
开局:原地坐,准备直接采矿砌砖抢大金,狗+移民,买工人
远古这把AI主要集中在欧洲,前期欧洲疯狂内卷,忠诚压不住直接淘汰了奥斯曼,远古三城开,因为亚洲没有邻居,所以尽可能多控地盘,12分相对远一点,首都大金神谕,一分圣地准备发教,因为信条大改,万神殿选了石圈(采石场+2鸽,+4大仙),首都一分总共三个采石场,因为远古时代分溢出,大仙留着古典发教。
52T进古典:因为前期双圣地科技一度比较低 ...
磁电子学
电子角动量
P_l=\sqrt{l(l+1)}\hbar
电子轨道磁矩
\mu_l=-\frac{e}{2m}P_l
电子自旋角动量(自旋量子数为1/2
P_s=\sqrt{S(S+1)}\hbar=\frac{\sqrt{3}}{2}\hbar
自旋磁矩
\mu_s=-\frac{e}{m}P_s
电子总磁矩
\mu=\mu_l+\mu_s=-\frac{e}{2m}(P_l+2P_s)
总角动量
P_J=P_L+P_S=[J(J+1)]^{1/2}\hbar
总磁矩
\mu_J=\mu_L+\mu_S=g_J[J(J+1)]^{1/2}\hbar
有效波尔磁子数
p=g_J[J(J+1)]^{1/2}
朗德因子
g_J=1 + [J(J+1) + S(S+1) - L(L+1)]/[2J(J+1)]
超导体会从超导态转变成为正常态
温度上升到临界温度TC
磁场加强到临界磁场HC
电流密度增加到临界电流密度JC
常导电流密度: $J_N=-n_Nev_N$
常导电子浓度 : $n_N = n_0(T/T_C)^4$
超导电流密度: $J_s=-n_se^*v_s$ ...
光电子学
固体光的吸收
光到电光照射固体,电子没有溢出时,光能会转化为电能。
电到光电子注入后,半导体材料电子被激发,电子跃迁到高能级
光的吸收系数固体光学中固体的光学性质可以用折射率$n$和消光系数$\kappa$来描述,两者构成复折射率
\hat{n}=n+j\kappa
\lambda \leq \lambda_C=\frac{1.24}{E_g}$E_g$单位为$\lambda$单位为$\mu m$
光的吸收系数$\alpha$:单位距离吸收的相对光子数
\alpha=\frac{4\pi \kappa}{\lambda_0}光的吸收过程
本征吸收
激子吸收
自由载流子吸收
杂质与缺陷吸收
晶格吸收
本征吸收电子从价带跃迁到导带,产生电子对空穴
直接跃迁($hv>=E_g$)导带最小值和价带最大值对应于相同的波矢,发生在直接带隙半导体
能量守恒
\hbar w=E_C(k_C)-E_V(k_V)
动量守恒
\hbar k_w=\hbar k_C-\hbar k_V
光子动量远小于电子动量
k_C\approx k_V间接跃迁($hv<E_g$)导带最小值和价带最 ...
半导体器件
PN结特性概述平衡PN结
n区
施主杂质
p区
受主杂质
因为存在载流子浓度差,空穴从p区向n区扩散,电子从n区向p区扩散,结p区侧聚集负离子(电离受主),结n区侧聚集正离子(电离施主),形成了,负空间电荷区,正空间电荷区,阻止进一步扩散,形成并增强相反方向的漂移运动,扩散与漂移的动态平衡
同质结:以两种相同的半导体单晶材料为基础
异质结:以两种不同的半导体单晶材料为基础
pn结: 在导电类型相反的半导体单晶材料交界处形成
高低结:在导电类型相同的半导体单晶材料交界处形成
n区导带的电子进入p区导带存在$V_D$的势垒,称为内建电势,也称为接触电位差
对此,我们有关系
eV_D=e|\Phi_{Fn}|+e|\Phi_{Fp}|
e\Phi_{Fn}=E_{Fi}(n区)-E_F
e\Phi_{Fp}=E_{Fi}(p区)-E_F
n区导带电子浓度
n=N_Cexp(-\frac{E_C-E_F}{k_BT})
本征半导体
n_i=N_Cexp(-\frac{E_C-E_{Fi}}{k_BT})所以
n=n_iexp(\frac{E_F-E_{Fi}}{k_BT}) ...