定式(?)——小目高挂脱先
定式(?)——小目高挂脱先
断更久,记录一个之前下出来的棋型,算是一个小飞刀,是相对场合下法。
首先我们看这个我当时下出来的情况,白12没有继续走断外边的下法,选择了脱先高挂,这时我们复习一个棋型:
小目高挂脱先-1
点三三跳出
在这个经典的三三棋型中一般认为白棋不好脱先,因为白棋脱先,黑棋小尖棋型饱满,补了冲了打,还有先手压缩的味道,是极大的一手。
小目高挂脱先-2
因此在刚才的图中黑棋是有理由不应对白棋的高挂的,局部手割分析的话实际上是白棋损了一个冲的味道和黑棋挡的交换,实际上加厚了黑棋,将来飞出更加硬气了。
小目高挂脱先-3
那么白棋肯定也不乐意了,我挂你小目,这么大你竟敢不理?托上来给你空掏了
小目高挂脱先-4
下面就是定式应法了,白棋要求黑棋给空,黑棋表示能给,但不能给太多:
小目高挂脱先-5
黑棋扳虎坚实,白棋退了一拆快速展开,江维杰(吐槽一下输入法,打出来都是姜维)老师的书中描述此时白稍好(虽然对棋型的评价也是从江老师的书里抄的),但是行棋至此要考虑一点搭配的问题,下面研究有些脱离定式书 ...
tranformer全流程零基础解析
Transformer全流程零基础解析
[!NOTE]
诈骗预警:虽然说是零基础,但是还是要有一般的深度学习基础,例如:
基本的深度网络概念、pytorch 基本使用、对权重的基本认识等。
本文将详细拆解Transformer的各个基本组件,并且配合基本的代码讲解,另外,本文的零基础为NLP领域零基础用户,需要有一定的深度学习认知,因此本文更偏向专业性,不会偏向通俗科普,但是读完本文可以秒杀市面上所有的Transformer介绍,下面开始正文。
原文链接:[1706.03762]
Attention Is All You Need (arxiv.org)
前言
本文的介绍思路将与市面上的大部分顺序不同,虽然Transformer提出的原文叫做Attention
Is All You Need,但是本文并不会优先介绍
attention机制(毕竟还有一篇论文叫做Attention Is Not All You Need
Anymore),所以在详细介绍attention之前就请把他当作一个线性层罢。
Transformer总览
接下来这张图我们将会反复出 ...
多元统计学(一)
多元统计学(一)
ok,又是新坑,我们来搞一下多元统计学,狠狠的补充一下基础。数学和那啥人工智能基础还不太一样,这玩意就抽象太多了,嗯,因此咱就只能尽可能融入一些自己的理解,但是就会让这个数学描述不甚严谨。(音乐预警)
多元
首先,笔者默认大家是掌握了基本的概率论与数理统计的,这样我们就可以减少很多东西的介绍,而进行直接推广理解。
在各位的大二的概率论与数理统计和高等数学中已经很好的接触了二元函数乃至多元函数,但是如果我说线性代数先天和多元函数很般配呢()
咳咳,虽然画风有点子诡异。既然我们要聊多元统计,总要先聊聊多元的理解。通俗一点的讲,我们首先来回顾二维平面下对于一个点的表示:
存在一个直角坐标系\(XoY\),则在该平面的点均可以表示为一个二元数对(或许称之为一个二元关系也不是不行),记作\((x,y)\)。我们理解一下,如果在直线上表示一个点可以表示为\(x=x_1\),二维平面上表达为\((x,y)=(x_1,y_1)\),实际上对于空间上的一个点的表示可以简单理解为几个坐标的简单罗列,这时向量刚好起到了这个作用!
理解1:在高维空间中,向量就可以 ...
定式——无忧角托
定式——无忧角托
嗯,开新坑,主要是对于一些角部定式手段的记录,变化图不一定能写全,第一次尝试写这种文章,写的不好请指正。
首先摆一个常见的开局:
无忧角托
虽然在AI视角来看,托并不是最优的一手,但是托能够衍生出很复杂的考验,对于新手而言会产生比较复杂的判断问题。
无忧角托-1
这里大概有三个点可以考虑
无忧角托-2
挡的下法
走在A位,黑棋表示忍让,未来依旧是一个平稳的布局,二者大体两分,但白棋略亏,因为白棋爬在二路,而黑棋已经在上方形成了牢固的实地。
无忧角托-3
外扳的下法
走在B位,是黑棋强硬的一手,要求把白棋杀死在角部,这时白棋大体只能扭断战斗,在角部腾挪是很困难的,而黑棋也基本职能无奈单长一个,行棋至此,白棋可以脱先了。
无忧角托-4
那,为什么只能无奈单长呢?
含蓄要求保留实地
黑棋打在外面,白棋爬在三路取得外势,完全回到两分,白棋取得一个硬头和外势,黑棋取得实地,但效率极低,故不肯,比如左上棋型立二拆一,且角部仍有先手骚扰。
无忧角托-5
直接要求保留实地
变 ...
超图简单入门
超图简单入门
经过小两个月的调(bai)整(lan),堂堂复更(但精神状态不佳)!
最近在研究一些图模型的工作,因此决定写一写记录一下,记录一下最近的工作。
图模型
首先,简单讲一下图模型(graph),图模型可以定义为\(G=<N,E>\),即通过一个边集合\(E\),和一个点集合\(N\)组成。其中边集通过二元关系来描述,即\(E=\{\}\)
——————————未完待续——————————
深度学习中的优化
深度学习中的优化
听着挺高端的是不,还听着挺难的,确实,单单来讲里边的数学确实有点子麻烦,但是我们有了一些计算机工具,我们就不需要从数学推导角度去深度的理解了。
优化与凸优化
无论如何我们都是无法避开讲一些数学的,(虽然俺的数学是个二把刀)我们尽力少用一些抽象的数学表达来描述清楚,但也会有一些朴素且不严谨(对于理解是无伤大雅的)
优化
首先优化是什么呢?为了变得更好而采取的动作。优化实际上和规划是很像的(其实优化是规划的子集),(有一说一现在高考连线性规划都不学了)都有某个目标函数和某些约束模型,最终得到最佳的参数组合。举个例子,我们知道找一个函数的最值我们需要用导数来寻找,但是可不可以通过某种搜索的方法穷举出最值呢?就拿一个二次函数来讲:
右上角的点为随机选择的初始点,我们希望找一个下坡路从而找到一个低点(是不是有点贪心的感觉,所以他也会有贪心出现的错误),然后逐渐逼近最低点,用数学的方式表达:
\[
argmin \ x^2
\] 没有约束条件,用到的求解方法表现为: \[
x_{t}=x_{t-1}-\eta \ \omega
\]
其中各种符号具 ...
数据挖掘实验
Python基础语法学习总结
实验目的
学习Python基本语法
实验场地与设备
线上
实验方式
阅读教程与程序设计
实验设计
Python语言基础
\[
图1.1 Python基础语法学习实验设计
\]
实验内容
1. Python语法总结
1.1 Python基本语法
(1) 基本语句
①
首先是输入输出语句,输入语句比较简单为name=input(),基本输出语句为print(),拼接输出使用逗号。
② 注释采用# 进行书写
③
代码风格:Python采用的是缩进式代码风格,所以对于复制粘贴比较不友好
④
条件判断语句:if 条件1 :...elif 条件2 : ... else : ...
⑤ 循环语句:
第一种是for循环:for x in []:
for x in ...:
循环就是把每个元素代入变量x,然后执行缩进块的语句
第二种是while循环:while 条件判断语句 :
break、continue和java中用法相同
(2) 数据类型
①
整数:对于很大的数,很难数清楚0的个数。Python ...
极限速成pytorch
极限速成pytorch
最近在准备搞搞这个自己的毕业设计,复现两篇论文什么的,于是要重新捡起好久不写的pytorch,于是决定简单写一个速成教程。首先,我得讲一下我的速成思想:对比学习+调整,还有速成不等于质量差,仅仅代表高效。
焚电子高香,敲电子木鱼
炼赛博丹药,成赛博神仙
数据操作
这里我们以numpy作为原本的模板,只指出差异,不处理相同部分,减少学习成本
很好,我们通过看文档发现貌似没什么不一样的,只是把原来的np改为torch。
下面不解释的罗列:
1234567import torchtorch.arrange(n) # 生成从0到n的整数torch.shape # 查看形状torch.reshape(Size) # 改变形状torch.zeros(Size) # 全0矩阵torch.ones(Size) # 全1矩阵torch.randn(Size) # 正态分布随机数,对应的np.random.randn()
同样的,torch中也有numpy中类似的初始化方法,其使用方式与numpy一致:
1 ...
搓OS-day9
手搓OS-day9
重量级难度,分配内存与回收(内核开始了),终于快一半了(折磨)
要求:
边界对齐到\(2^i\)
不够分配时返回NULL(0)
拒绝超过16MiB的分配
不必初始化内存,可以全赋值为零
允许多处理器并行使用
C语言的面向对象
虽然很早之前老师就已经提过这个C语言的骚操作,嗯,还是有点难以接受
首先要介绍一个函数指针的概念,这个类似的概念实际上在Python里是接触过的,只是没有明确的提出来,当时令人感到很神奇(同时也感到很鸡肋)
函数指针
声明
1return_type (*ptr)(parameter_type1,parameter_type2,……);
这样我们就声明了一个指向某个函数入口的一个指针,当然指针指向的函数需要初始化,一个小栗子:
12345678910111213141516171819#include <stdio.h>int add(int a,int b);int main(){ int (*ptr)(int,int); ptr=add; int result=pt ...
手搓OS-番外2
手搓OS-Makefile
我们在生活中常常会遇到这样的问题:为了查看修改后的代码效果,一遍又一遍的编译,敲一行又一行的命令,现在让Makefile解放你的双手。(误)
关于C语言
在之前关于bare
metal的学习中,我们已经基本理解C语言编译运行的原理,也就是编译库+编译源文件,链接形成一个可执行文件。
罗列出编译静态库与动态库的方式:
12345# 静态库gcc -r [name.a] [.o] [.o]# 链接为可执行文件gcc [.c] [.a] -o [自定义输出文件名]gcc [.c] -o [自定义输出文件名] -l[库名] -L[库所在路径]
12345# 动态库gcc -c -fpic [.c/.cpp][.c/.cpp]... gcc -shared [.o][.o]... -o [lib自定义库名.so]# 上面两条合并也是可以的gcc [.c/.cpp] -o [自定义可执行文件名] -l[库名] -L[库路径] -Wl,-rpath=[库路径]
记不住对吧,我也是(),不过记不住也问题不大,多写写就记住了。
Makefile
...