您的位置:首页 > 大数据 > 人工智能

人工智能——电脑模拟人类学习

2016-03-12 19:57 483 查看
本文转至:http://blog.csdn.net/cnyali/article/details/50864942

众周所知,最近韩国世界围棋冠军李世石与谷歌公司开发的机器人AlphaGo已经进行了四次围棋比赛(截止3月13日),李世石直到第四局才扳回一局。

其实AlphaGo机器人就是传说中的人工智能,什么是人工智能呢?大家看下下面的这个程序就知道了:

PS:这个程序其实就是让人工智能学习并认识怎么判断一个0~9的数是奇数还是偶数,最简单的人工智能程序

// 感知器判断数字奇偶性
#include<stdlib.h>
#include<stdio.h>
#include<time.h>

int M[10];//权值
int X[10]={1,2,3,4,5,6,7,8,9,10};//输入向量
int Y[10]={1,0,1,0,1,0,1,0,1,0};//理想输出向量,0,奇数,1,偶数
int O[10];//保存输出向量
int ST=52;//阈值

void initM(){//初始化权值
srand((unsigned int)time(0));
for(int x=0;x<10;++x)
M[x]=rand()%100;
}

int active(int m,int x){// 跃迁型激活函数
int o=m*x;
if(o>ST)return 1;
else return 0;
}

void calcY(){//计算输出向量
for(int x=0;x<10;++x)
O[x]=active(M[x],X[x]);
}

//根据实际输出向量和理想输出向量调整权向量,
//返回实际输出和理想输出不匹配的数目
int adjustM(){
int err=0;
for(int x=0;x<10;++x)
if(O[x]!=Y[x]){
err++;
if(0==O[x])
M[x]+=X[x];
else
M[x]-=X[x];
}
return err;
}

void printM(){//打印权向量
for(int x=0;x<10;++x)
printf("M[%i]=%i\n",x,M[x]);
}

void test(int input){
printf("[%i][%i]",M[input],X[input]);
if(active(M[input],X[input]))
printf("%d 是偶数\n",input);
else
printf("%d 是奇数\n",input);
}

int main(){
int n=0;
initM();
while(1){// 一直训练直到能够100%正确为止
n++;
calcY();
int err=adjustM();
if(0>=err)break;//能够 100 %正确地回答问题了,结束训练
printf("错误数%d\n",err);
}
printM();
printf("阈值%d 训练次数%d\n",ST,n);

while(1){
int a=0;
scanf("%i",&a);
if(0>a || 9<a)break;
test(a);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: