ホーム » コンピュータ (ページ 51)
「コンピュータ」カテゴリーアーカイブ
鶴亀算とプログラミングと人工知能
子どもに「プログラミングと人工知能の違いって何?」と聞かれたので、説明。
鶴亀算
鶴亀算とは、「鶴と亀がそれぞれ何匹かいます。頭が h 個、足が f 本だとする。この時、鶴が x 匹、亀が y 匹か答えよ。」という問題。
この問題をどうやって解くか?
(a)普通のプログラミング
この問題であれば、
h = x + y ; f = 2*x + 4*y ;
の関係が成り立つけど、コンピュータは自動的に連立方程式を解いてくれるわけではない。このため、問題から
h = x + y ; // アルゴリズムを考える作業... f/2 = x + 2*y ; よって y = f/2 - h ; // 解き方 = アルゴリズム x = 2*h - f/2 ;
こういう問題を解く考え方・手順をアルゴリズムという。
これを実際のコンピュータで動かすために、例えば C 言語で書いてみる。
#include <stdio.h>
void main() {
double h , f , x , y ;
scanf( "%lf%lf" , &h , &f ) ; // 頭と足の数を入力
x = 2 * h - f / 2 ;
y = f / 2 - h ;
printf( "鶴=%lf\n" , x ) ;
printf( "亀=%lf\n" , y ) ;
}
このように、アルゴリズムを実際のプログラム言語で書くことが、プログラミング(コーディング)。プログラマーは、アルゴリズムを考えプログラムを作る人。あえてプログラマの仕事を分類するなら、アルゴリズムをや、どうプログラムを動かすのか設計するのがシステムエンジニア、その設計に沿ってプログラムを書くのがコーダ。
人工知能
最近は、碁の世界で、プロ棋士を人工知能のコンピュータが勝ったと、ニュースになって「人工知能」という言葉がもてはやされているけど、20年ほど前に研究されていた人工知能と、最近のディープラーニングとか機械学習といったキーワードで説明されている「人工知能」はまるっきり違うものである。例え話で言うなら、昔の人工知能は「論理的思考の左脳」を作ることを目指していた。一方、最近の機械学習の人工知能は「直観的思考の右脳」とみなすことができる。
(b)論理的思考の人工知能(左脳的人工知能)
鶴亀算でいうならば、問題から以下の方程式が与えられたら
h = x + y ; f = 2*x + 4*y ;
既知変数が、h , f で、未知変数が x , y だから、連立方程式を自動的に解いて、x , y を答えてくれるようなシステム。
(c)直観的思考の人工知能(右脳的人工知能)
最近の機械学習とかを、極端に簡単な表現をすると…
脳の神経細胞(ニューロン)の動きを真似する神経細胞網(ニューラルネットワーク)を作っておき、
h=2,f=6,x=1,y=2...間違い h=2,f=6,x=1,y=1...正解 h=3,f=8,x=1,y=1...間違い h=3,f=8,x=2,y=1...正解 :
というような、正解や間違いを大量に与えることで、x,yの関係を覚えていくのが機械学習。連立方程式を解く訳ではないので、学習が不十分だと、ほとんど正しい答えを答えるけど、たまに間違えるという状態の時もある。
最近の碁のシステムは、これらの組み合わせ
最近の碁などでの人工知能の活躍は、これらのプログラミングがうまく組み合わせることができるようになったから。例えば、石を打つ時に、石の配置を管理するのが(a)普通のプログラミング。石を打つ時に「ここはもっと深く先読みが必要かな?」、「ここは石の配置からいい手かな?」といった判断(静的評価)に(c)機械学習による人工知能を使う。さらに先読みすべきかの点数が高いものを選んで、その先の手を打った場合の石の配置の点数を集計して、先読みした場合の評価(動的評価)を行うのが、(b)論理的思考の人工知能のテクニック。
aptitude purge nano
Linux で vipw とか visudo とかのコマンドを実行する時に、”vi”という名前のくせに、エディタ nano が起動して相変わらず使い方が判らない。
“export EDITOR=vi”とかをやりながら使っていたけど、よく考えたら nano なんて使ってないし、消せば alternative 機能が vim.tiny に切り替えてくれる。 だったら素直に “sudo aptitude purge nano” でいいじゃん。
インドネシアでの接続許可
自宅サーバは、IPアドレスのgeoip情報を調べて 怪しい国からは接続拒否などをするようにしてあるけど、 インドネシアへの出張を控え、接続許可設定を行う。
# 出張終わったら、また接続拒否するだろうな…
WordPress 4.9-ja 更新
数日前から、wordpress 4.9-en が公開されていたけど、緊急性のあるbugfixでもなかったから、*-ja が公開されるまで待ってて、ようやく更新。職場サーバもあわせて更新する。
高校の緊急メールが届かない
休講だったらしい
この台風による子供の高校の緊急連絡メールが届いていない。10/23午前は休講になっていたらしい。緊急メールが届いていなかったけど、「大雨警報」「豪雨警報」が出ているし、たぶん休みと思いながらも、連れて行ったけど、案の定休講だったらしい。
子どもの友達の話によれば、前日には緊急連絡メールが届いていたらしいけど、私のメールアドレスには届いていない。
届いていない原因分析
学校に提出した緊急連絡用のメールアドレスは1件しか登録できないので、自宅サーバのアドレスで登録し、私と奥さんの2つのアドレスに転送するようにしてあった。ついでにこのメールアドレスは、spam を受け付けないように、送り側のメールアドレスでフィルタをかけていた。
んで、最初、緊急メールは、From が、pta.bz で届いていて、フィルタにも pta.bz を登録してあった。
でも、今回メールが届いていないので、LOG を確認したら、otokunet.jp というアドレスを reject していた…(x_x;
# うーん、こういう設定情報は、何らかの連絡が欲しいずら。
ということで、otokunet.jp をフィルタに登録。
Fall Creators Updateで不具合
Windows 10 の”Fall Creators Update”が出てきたので、さっそく適用。職場用の”Surface pro4″は、あっさり終了。ただ、自宅PCは不具合が出てきた。
Update適用直後に画面が乱れていて、再起動すれば普通に動いていたけど、サスペンド明けに画面が乱れている。
メーカーは違うけど、同じような症状が報告されている。オンボードグラフィックの問題と思われるので、当面はシャットダウンで対応かな。
Raspberry Piに温湿度計とLCDモジュール
LCDディスプレィ接続
まずは、秋月の8×2のキャラクタLCDディスプレィ(AQM0802A)を接続してみた。
MZ-80C内のGPIOを、真上に接続するのはモニタ部分と干渉するので、I2C用のコネクタは背面に(MZ80C的には下側)につけて引き伸ばし。

当然ながら、8×2の小さいLCDを選んだのは、モニタ部分に埋め込むためなので、厚紙を切って配置してみた。参照先のサンプルコードも無事に動いて、”ハローワールド”の表示。

LCDのバックライト機能があるのだけど、GPIO4のポートをON/OFFしても光らない。なぜ…
単純に、バックライトのLEDのA,Kがはんだ付けしてなかっただけ…(x_x;
作業メモ
- BME280使用 温湿度・気圧センサモジュールキット
- JP3:short(I2C使用),JP2,JP1:open(No pullup)
- 1:VDD, 2:GND, 3:NC, 4:SDA, 5:GNDでアドレス0x76, 6:SCL
- 参考記事
- Raspberry Piキャラクタ液晶ディスプレイモジュールキット バックライト付
- JP1,JP2,JP3:open
- 参考記事
- Raspberry Pi Model A+











