[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-n18JA2rN-1658380796070)(https://s2.loli.net/2022/03/28/osNHd8Yu5nMWxXf.png)]
class Node():
def _init_(self,state,parent,action):
self.state = state
self.parent = parent
self.action = action
class StackFrontier():
def _init_(self):
self.frontier = []
def add(self,node):
self.frontier.append(node)
def contains_state(self,state):
return any(node.state == state for node in self.frontier)
def empty(self):
return len(self.frontier) == 0
def remove(self):
if self.empty():
raise Exception("empty frontier")
else:
node = self.frontier[-1]
self.frontier = self.frontier[:-1]
return node
class QueueFrontier(StackFrontier):
def remoe(self):
if self.empty():
raise Exception("empty frontier")
else:
node = self.frontier[0]
self.frontier = self.frontier[1:]
return node
class Maze():
def _init_(self,filename):
with open(filename) as f:
#部分代码.....
注意到
__init__
方法的第一个参数永远是self
,表示创建的实例本身,因此,在__init__
方法内部,就可以把各种属性绑定到self
,因为self
就指向创建的实例本身。
对于人类会怎么做,需要更聪明的算法
贪婪最佳优先搜素 greedy best-first search
通过一个启发式函数估算我们离目标有多近,并且注意启发式函数并不代表实际到达的步数,有墙可能会更远。
启发函数的好坏直接影响了结果好坏
A*搜索
如何改进?判断权值是否再选择一个较小的结果后,又发现回升。
A*搜索不仅考虑启发式函数,还考虑多长时间达到特定状态。
如果启发式函数不高估实际成本,那么它是可接受的,每个节点的结果或者与实际相同,或者小于实际值,但是不能认为我离目标比实际更远。这里不理解没关系,视频说这背后的数学比较深奥,缺失不好理解。选择启发式函数,是挑战,启发式函数越好越容易解决问题。A*通常需要大量内存。
Adversarial Search(对抗性搜索)
Minimax 极大极小算法
an agent trying to make intelligent decisions,and there is someone else who is fighting against me,so to speak.
MAX(X) aims to maximize score,MIN(O) aims to minimize score.
So:初始状态
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CrlgjxkB-1658380796074)(https://s2.loli.net/2022/03/28/I1HAbqycRPrspzJ.png)]
Player(s): 返回哪一个玩家移动到状态s
Actions(s): 返回所有状态中合法的移动
Result(s,a): 在动作a达到状态s之后返回状态
Terminal(s):检查是否状态s,是否是终止状态
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qK5EK4KL-1658380796076)(https://s2.loli.net/2022/03/28/ZWQcNkDzgfwX2Rq.png)]
Utility(s):计算终止状态的分数
MIN一直选择值较小的状态,MAX一直选择值较大的状态,下图为两者的博弈树
可以进行哪些优化
有些状态不需要查看,只需在我能选择最优时,选择的那个结果,即对不许查看的结果进行剪枝(alpha-beta pruning)。
由于计算机所能查看到的深度有限,因此我们要做一些限制,即深度限制的极小极大算法(depth-limited Minimax)
评估函数来判断胜率,https://xkcd.com/832/ 网站中的对抗性测率游戏的所有可能
基于知识的代理 knowledge-based agents
sentence
知识表示语言
命题逻辑、命名符号
not
真值表(确实和离散数学对应)
P | -p |
---|---|
false | true |
true | false |
介绍了与^、或v
implication(->)只有条件为真时,才能推出结果为真,条件为假,不能推出结果为真或者假。
biconditional (<->)同为真,不同为假,(同或)
真实情况
建立模型model
存储knowledge base 即已知的结论、知识
得出entailment 后果,理解为结论
实列
P:it is a Tuesday
Q: it is raining.
R: Harry will go for a run.
KB(knowledge base): (P^非Q)->R
inference : R为真
KB能否得出A结论
Model Checking 模型跟踪算法
to determine if KB|= a:
Enumerate all possible models.
if in every model where KB is true, a is true ,then KB entails a.
form logic import *
rain = Symbol("rain") #it is raining.
hagrid = Symbol("hagrid") #Harry visited Hagrid.
dumbledore = Symbol("dumbledore") #Harry visited Dumbledore
knowledge = And(Implication(Not(rain),hagrid),
Or(hagrid,dumbledore),
Not(And(hagrid,dumbledore)),
dumbledore
)
print(knowledge.formula())
Knowledge Engineering 知识工程
Clue 线索
propositional Symbols 命题符号
使用命题符号创建句子
命题逻辑转化为结论
Logic puzzles 逻辑谜题
Mastermind 策略规划
inference Rules 推理规则
Modus Ponens 惯性法
double negation elimination 双重否定消除
implication elimination 隐含消除
Biconditional elimination 双条件删除
De Morgan’s Law 德摩根律
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ixULRryh-1658380796079)(https://s2.loli.net/2022/03/29/pQ7r9bzqclwhLFH.png)]
Distributive Property 分配律
theorem proving 定理证明方法
clause
conjunctive normal form 合取范式(CNF)
conversion to CNF 将推理规则和CNF结合
p和非p同真,结论为假
inference by resolution
这里有点吃力,我理解为离散数学中用反证法去解命题
First-Order Logic 一阶谓词逻辑
两种类型的符号
常量符号
universal quantification 普遍量词
existential quantification 存在量词
二阶逻辑
等等
通常计算机获取信息带有不确定性
估计事件发生的可能性
Probability
unconditional probability 无条件概率
conditional probability 条件概率
P(a|b) = 条件概率公式
random variable 随机变量,举了一些例子
independence 独立事件
Bayes’ Rule 贝叶斯公式
joint probability 联合分布
Rules 逻辑关系对应到概率论的规则
Bayesian network 贝叶斯网络
inference
pomegranate 石榴库
pomegranate 是基于 Python 的图模型和概率模型工具包,它使用 Cython 实现以加快反应速度。它源于 YAHMM,可实现快速、高效和极度灵活的概率模型,如概率分布、贝叶斯网络、混合隐马尔可夫模型等。概率建模最基础的级别是简单的概率分布。以语言建模为例,概率分布就是是一个人所说的每个单词出现频率的分布。
原文链接:https://blog.csdn.net/Uwr44UOuQcNsUQb60zk2/article/details/79029870
form model import model
probability = model.probability([["none","no","no time","miss"]])
print(probability)
Approximate Inference
Likelihood weighting 似然加权
Markov assumption 马尔科夫假设
Markov chain 马尔科夫链
Transition Model 过渡模型
隐马尔可夫模型
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AfrXYnrS-1658380796081)(C:/Users/71041/AppData/Roaming/Typora/typora-user-images/image-20220330142457952.png)]
Sensor Model (or emission probabilities)
Sensor Markov assumption 传感器马尔可夫假设
the assumption that the evidence variable depends only the corresponding state.
证据变量只依赖于相应状态的假设。
概率论的部分听英语讲有点吃力
选择最好的选项
local search
search algorithms that maintain a single node and searches by moving to a neighboring node.
医院放在哪里使得代价尽可能的小
state-space landscape
Hill climbing 爬山算法
找到最高点,找到最低点
伪代码
local maxima 局部最大
local minima 局部最小
爬山算法通常只能找到局部的最优
算法容易陷入flat local maximum和shoulder
Hill Climbing variants 爬山算法变形
代码演示了算法
Simulated Annealing 模拟退火算法
Traveling Salesman Problem(TSP) 商旅问题
linear Programming (线性规划)
Minimize a cost function c1x1+c2x2+…+ cnxn
with constraints (约束)of form a1x1+a2x2+ … + anxn ≤ b
or of form a1x1 + a2x2+ … + anxn = b
with bounds for each variable li ≤ xi ≤ ui
Simplex 单纯形
interior-Point 内点算法
Constraint Satisfaction
Constraint Satisfaction Problem
举了数独的例子
变量是方格,用坐标代表
变量的域
约束
下图为排课的例子
Hard constraints
soft constraints
single constraint
binary constraint
node consistency 节点一致性
所有节点满足一元约束
Arc consistency电弧一致性算法 AC-3
Backtracking Search 回朔搜索
这部分没有太理解
miantaining arc-consistency
Domain-Values
Supervised Learning
given a data set of input-output pairs,learn a function to map inputs to outputs.
输入数据,使得计算机映射出一些结果
classification 分类
有很多数据,数据通常为一个表,然后预测新的特征是否为某个值
函数(数据,数据)= right or not
nearest-neighbor classification 邻近算法
algorithm that,given an input ,chooses the class of the nearest data point to that input. 输入的数据根据附近的点来判断新输入点所代表的值。
k-nearest-neighbor classification K邻近算法
尝试多个不同算法,来找到最好的
线性回归
给数据加权
通常用适量数值表示
weight vector 学的权重向量
input vector 特定的输入,需要判断的
两个向量的点积,所以长度必须相同
perceptron learning rule 感知学习
我们可以从随机权重开始,然后从数据中学习,去改变权值
y是实际输出,x是输入
实际值大于估计值,就需要增加权重
实际值小于估计值,就需要减少权重
alpha 表示学习率,a越大表示变化越大
阈值函数
hard threshold
soft threshold
Support Vector Machine 支持向量机
仅仅画一条线通常并不能很好的处理分类问题,取决于线的位置
处理的信息是离散的
regression 回归问题
广告费转化为销售额
需要找到信息之间的关系
loss function 损失函数
function that express how poorly our hypothesis performs
函数表示我们的假设执行得有多差 ,损失了准确性,因为预测该函数的输出不是实际的输出。
0-1损失函数
L1 loss function
不仅考虑损失,还考虑距离真实的值有多远
L2 loss function
增加了错误预测的惩罚,使用的是平方的差异
overfitting 过拟合
a model that fits too closely to a particular data set and therefore may fail to generalize to future data.
regularization 正则化,规格化
在损失函数和复杂性之间做权衡
penalizing hypothesis that are more complex to favor simler,more general hypotheses.
holdout cross-validation 交叉验证
training set and test set 分为训练集和测试集
k-fold cross-validation K折交叉验证
splitting data into k sets,and experimenting k times,using each set as a test set once,and using remaining data as training set.
不仅仅是划分事物,我们将事物分为k个不同的组
scikit-learn
快速使用机器学习的设置
演示
使用支持向量机SVC、K邻近算法对事物进行分类
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RxibkVyT-1658380796084)(https://s2.loli.net/2022/04/01/TmzMsDr8CuAS5xd.png)]
reinforcement learning 强化学习
given a set of rewards or punishments,learning what actions to take in the future.给予一套奖励或惩罚,学习将来采取什么行动。
Markov Decision Process 马尔可夫决策过程
model for decision-making,representing states, actions,and their rewards.
决策模型,代表状态,行动和他们的回报。
Q- learning Q学习
method for learning a function Q(s,a), estimate of value of performing action a in state s.学习函数Q(s,a)的方法,在状态s中估计执行动作a的值。
unsupervised learning 无监督学习
given input data without any additional feedback,learn patterns.
Clustering 聚类
k-均值聚类
algorithm for clustering data based on repeatedly assigning points to clusters and updating those clusters’s centers;
它将把我们所有的数据点分为k个不同的簇
根据数据不断的调整数据中心
启发于神经元
Artificial Neural Networks
Model mathematical function from inputs to outputs based on the structure and parameters of the network. 根据网络的结构和参数建立从输入到输出的数学函数模型。
Allows for learning the network’s parameters based on data.允许学习基于数据的网络参数。
如何建立这个函数
联想到之前将的h函数,其中对于函数中的系数有变量的称为权重,没有变量的成为”偏见“。
h ( x 1 , x 2 ) = w 0 + w 1 x 1 + w 2 x 2 \begin{align}h(x_1,x_2)= w_0+w_1x_1+w_2x_2 \end{align} h(x1,x2)=w0+w1x1+w2x2
step function
logistic sigmoid
g ( x ) = e x e x + 1 \begin{align}g(x)= \frac{e^x}{e^x+1} \end{align} g(x)=ex+1ex
rectified linear unit (RelU)
h ( x 1 , x 2 ) = g ( w 0 + w 1 x 1 + w 2 x 2 ) \begin{align}h(x_1,x_2)= g(w_0+w_1x_1+w_2x_2) \end{align} h(x1,x2)=g(w0+w1x1+w2x2)
Or 与And函数
可以让神经网络更复杂
多个输入,多个权值,多个和
如何训练这些函数
关心多个,多个输出,需要多个权重
Perceptron 感知器
multilayer neural network 多层神经网络
backpropagation 反向传播算法
Deep neural network 深度神经网络
Overfitting 过拟合
Dropout
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FB6RsAen-1658380796086)(https://s2.loli.net/2022/04/02/sRWyr5EZ6V8CK7k.png)]
TensorFlow
图像识别
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dAgDM6iq-1658380796086)(https://s2.loli.net/2022/04/02/aW48f19MXDd6uns.png)]
image convolution 图像卷积
applying a filter that adds each pixel value of an image to its neighbors weighted according to a kernel matrix.
应用一种过滤器,根据核矩阵加权将图像的每个像素值与相邻的像素值相加。
pooling 池化
reducing the size of an input by sampling from regions in the input .
通过对输入区域进行采样来减小输入的大小。
convolutional neural network (CNN) 卷积神经网络
neural networks that use convolution usually for analyzing images.
import tensorflow as tf
minst = tf.keras.datasets.mnist
(x_train,y_train),(x_test,y_test) = mnist.load_data()
x_train,x_test = x_train /255.0,x_test/255.0
y_train = tf.keras.utils.to_categorical(y_train)
y_test = tf.keras.ytils.to_categorical(y_test)
x_train = x_train.reshape(
x_train.shape[0],x_train.shape[1],x_train.shape[2],1
)
x_test = x_test.reshape(
x_test.shape[0],x_test.shape[1],x_test.shape[2],1
)
#这里是创建CNN的地方
model = tf.keras.models.Sequential([
#第一层是卷积层,模型通过32不同的过滤器,每个过滤器是(3,3)的内核,指定激活函数为activation ="relu",表示输入的形状input_shape=(28,28,1),对于手写数据集是表示28x28像素的网格,只有1个通道值,即黑白的
tf.keras.layers.Conv2D(
32,(3,3),activation ="relu",input_shape=(28,28,1)
),
#最大池化层,使用2x2大小的pool,有助于减少输入的大小
tf.keras.layers.MaxPooling2D(pool_size = (2,2)),
#平整所有单元,进入所有单元?
tf.keras.layers,Flatten(),
#用128向我的神经网络添加一个隐藏层
tf.keras.layers.Dense(128,activation="relu"),
#防止过拟合添加,在训练时,随机从隐藏层中删除一半
tf.keras.layers.Dropout(0.5),
#输出层,有10个输出单元,激活函数为softmax,将输出变为概率分布
tf.keras.layers.Dense(10,activation="softmax")
])
#编译模型
model.compile(
optimizer="adam",
loss ="categorical_carossentroypy",
metrics["accuracy"]
)
#适合所有的训练数据
model.fit(x_train,y_train,epochs=10)
#评估神经网络的性能
model.evaluate(x_test,y_test,verbose=2)
#保存到文件,保存模型到一个文件中,以便之后使用
if len(sys.argv) ==2:
filename = sys.argc[1]
model.save(filename)
print(f"Model saved to {filename}.")
feed-forward neural network
neural network that has connections only in one direction.
只有一个方向连接的神经网络。
CaptionBot 微软开发的应用,理解图片
递归神经网络
Natural Language Processing
机器翻译
寻找特定的命名
语言有歧义,ai要理解有困难
Syntax语法
Semantics
formal grammar
a system of rules for generating sentences in a language.
Context-Free Grammar
一个简单的句子,希望AI能看出句子的结构,
这里感觉跟编译原理对上了
she saw the city
N V D N 转换为非终结符
重写规则
NP(非终结符) -> N(终结符) | DN
动词也可以解释为这样的
nltk
import nltk
grammar = nltk.CFG.fromstring("""
S-> NP VP
NP-> D N | N
VP->V|V NP
D->"the"|"a"
N->"she"|"city"|"car"
V->"saw"|"walked"
""")
parser = nltk.ChartParser(gramar)
sentence = input("Sentence:").split()
try:
for tree in parser.parse(sentence):
tree.pretty_print()
tree.draw()
except ValueError:
print("No parse tree possible.")
n-gram
a contiguous sequence of n items from a sample of text
character n-gram
a contiguous sequence of n characters from a sample of text
word n-gram
a contiguous sequence of n words from a sample of text
unigram
bigram
trigrams
tokenization标记化
通过语义进行预测
Markov model
Text Categiruzation
bag of words model
model that represents text as an unordered collection of words.
Naive Bayes
additive smoothing
adding a value alpha to each value in our distribution to smooth the data
Laplace smoothing
adding 1 to each value in our distribution: pretending we ‘ve seen each value one more time than we actually have 给分布中的每个值加1:假装我们看到每个值的次数比实际多一次
information retrieval
the task of finding relevant documents in response to a user query.
topic modeling
models for discovering the topics for a set of documents.
term frequency
number of times a term appears in a document.
function words 功能词,is ,and 等
content words 需要关心的词
inverse document frequency
measure of how common or rare a word is across documents
tf-idf
ranking of what words are important in a document by multiplying term frequency(TF) by inverse document frequency(IDF)
information extraction
the task of extracting knowledge from documents
看起来像模板才可用
WordNet
Word Representation
one hot Representation
representation of meaning as a vector with a single 1,and with other values as 0.
distribution representation
representation of meaning distributed across multiple values.
you shall know a word by the company it keeps. J.R.Firth
word 2 vec
model for generating word vectors
skip-gram architecture
neural network architecture for predicting context words given a target word.
单词矢量
基于信息语料库,收录语义更相似的地方。