古いブログ記事

ここには、小生がかって勤務していた大学のブログに書いた、懐かしい記事をいくつか再掲しています。

(小生自身による投稿は出典表示無しで、他の方の投稿については、元記事URLを明示して引用させていただきました。)

2011年4月1日金曜日

「新しい」技術で「古い」PCを活用

こんにちは。このブログは大変賑やかで楽しそうですね。私も何か記事を書きたくなりました。私は教員のyamafuです。(かって勤務していた会社での職制上の略称が「ヤマフ」でした)最近の高性能パソコンを求める学生さんに遅れを取らないように努力はしています。しかし、その反面、古いパソコンも大切にという思いも捨てきれません。ここでは、7年前に買ったノートPCを今も利用しています、という話を書きます。ちょっとだけ前置きがあります。 


ヤフー、グーグル、アマゾンなどが提供する様々な情報サービスの裏では、極めて大規模なデータ処理がなされていることは、みなさんも想像できるでしょう。それらの処理は、数千台以上のコンピュータ群の連携で行われています。これを大規模分散処理と呼びます。その枠組みを与えるソフトウェアの一つにHADOOPというのがあります。HADOOPはこのような大規模分散処理のためのものですが、大学などでは、少数台のパソコン構成でも試行することができます。そこに、古いパソコンの出番があります。パソコンのOSは、Windowsのままでも可能ですが、Linuxにしてしまった方が、より効率的に使えます。


では、実際に試した状況を示しましょう。HADOOP上で動かすWik-IE( 東京電機大学の森竜也先生が公開)と言うアプリケーションがあります。これは、Wikipedia(Web上の百科事典)のデータファイルを色々な角度から解析します。日本語版のWikipediaのデータファイルは、全体で約6ギガバイトという巨大なものです。今回は、このファイルのデータ構造から、見出し項目(約200万件)だけをすべて抽出することをやってみました。


図のとおり、ノートPC3台構成の小規模HADOOPで動かしました。これら3台は、7年前、6年前、1年前に購入というかなりの強者です。この構成で、上記の解析(抽出)は約15分で完了しました。古いマシンの割にはかなり速くできたと感じました。注目してください!各パソコンの性能にほぼ比例した分量のデータを担当して解析していますね。古くても、教育環境ではまだ使えることが確認できました。


■ちょっと補足しますね。コンピュータの性能はCPUのクロック周波数だけで決まるわけではありませんが、ここでは目安としてクロック周波数を使ってよいでしょう。値が大きいほど高速になります。PC3はDual Core(同時に動くCPUが2個)となっています。すなわち、大まかな性能比は、PC1 : PC2 : PC3 = 1.0 : 1.2 : 3.2となります。処理したデータ量は、21 : 29 : 59 = 1.0 : 1.3 : 2.8であり、各PCは、ほぼそれぞれの性能に見合った大きさのデータ量を処理していると言えます。

2011年9月5日月曜日

今日は大学院入試でした

http://blog.cs.kanagawa-it.ac.jp/2011/09/blog-post.html


大学院はご存知ですか?大学は4年で卒業ですが、その後2年間の博士前期課程(修士課程)、それに続く3年の博士後期課程(博士課程)というものがあります。理工系の有力大学の大学院進学率は、学部学科にもよりますが8割程度です。本学には修士課程の入学試験は年3回あり、今日はその2回目の試験でした。

 午前中に英語と専門科目(4科目)の筆記試験があり、午後は面接試験です。ご覧いただくように一人ひとり順番に面接するので、受験者は控室で自分の順番が来るのをこの部屋で待ちます。

今回は面接室は2部屋用意されました。だいたい似たような質問となります。自分の言葉で言うこと、自分の考えや行ったこと、行っていることを説得力を持って、実例を示して説明することが重要です。これはどのような面接でも同じだと思います。

 今日合格した人は、これからは研究漬けの毎日になることができます。若いある期間に相当の努力をすることが長い人生のための盤石の礎(いしずえ)になるのです。ぜひとも頑張ってほしいと思います。同時に、本学も進学率をもっと向上させて、研究室をより一層活性化していきたいものです。

投稿者 HIRO 時刻: 20:33


1 件のコメント: urbana 2011年9月5日 23:06

みなさん(高校生、それに大学に在学するみなさん)、このブログの最後の方に書かれている "若いある期間に相当の努力をすることが長い人生のための盤石の礎(いしずえ)になるのです。" は本当です。しかし、実際には、私のように何年も後にならないと実感はできないでしょう。ですから、今は、先輩の言う事を信じるしかないのです。別の言い方をすると、「今に打ち込め」となるでしょう。つまり、何か感じるもの(感動したり、すごく良く分かったこと、難しそうだけどやってみたいこと)があれば、それに打ち込め!ということです。

2012年2月19日日曜日

京都大学ICTイノベーション2012

このブログにも、本学の卒論や修論の完了に関する記事がいくつかあります。教員としては、来年こそは少しでも今年度よりも良くしたい、という気持ちを抱く時期でもあります。そのためには、学生だけでなく教員自身も前向きに色々なことに取組む準備が必要です。多くの教員が、情報技術関係の学会や技術セミナーなどにも参加して充電します。その一例として、私は、この時期、毎年、京都へでかけています。「京都大学ICTイノベーション」という催しに参加するためです。下の写真は、ポスター設置準備中の学生らの様子です。


私が参加し始めたのは、2009年2月からなので、今回で4回連続の参加です。1日だけですが、午後いっぱい、約70件のポスター発表があります。特徴として、このうち、約30件はオーラル発表があります。しかし、発表は1件5分に限られています。時間が短いので、要点を絞って話すことになります。この口頭発表を聞いて、気に入った研究については、ポスターの会場でじっくり質問したりできるという仕組みです。1件5分と言っても、休憩をはさんで約3時間に及びますが、聞いていてもあまり疲れません。ポイントだけ話してくれるからだと思います。


これ以外に私が感じたことは2つくらいあります。一つは、修士や博士課程の学生がほとんどであり、一部、若い助教の先生の発表もありました。現代風の若者の感性を感じるものが多いです。二つ目は、古典的な情報工学を含む幅広い分野が扱われていることです。すなわち、「リーマン多様体上の... 」という数理工学の問題から、「Javaのための漸進的型付け」というソフトウェア工学、「信憑性指向のWeb情報の検索」という社会情報学に関するものまで様々です。彼らに共通する(と感じられる)ことは、直接的に数理的手法を駆使していない場合でも、その基礎を持っているということです。


毎日、自分の大学の学生を見ているだけでなく、他の大学のまとまった学生発表を見たり聴いたりすることは、とても有意義だと思います。この時期、京都は寒いです。発表会の翌朝、ホテルの窓から、京都駅の構内をみたら、うっすらと雪化粧していました。下記の写真です。


2012年8月12日日曜日

本ブログの記事「iPhoneにSuicaEdyをつける」は、多くの方々に読まれているようです。SuicaやEdyはNFC(近距離無線通信)と言われる部類のものですが、NFCには他にMifareという仕様もあります。ここでは、そのMifareの活用例を示します。

9月に本学全体で避難訓練があります。12階建ての情報学部棟から、学生、教職員が階段(南と北の2つ)を使って避難する状況を把握したいと思います。そこで登場するのが、NFCタグです。下図のようなイメージです。避難する際、各階段入り口に貼られたNFCタグに、Androidをタッチして行きます。NFCタグ内のメッセージ("南12F"など)読み取りと通過時刻を記録するためです。

さて、これを実現するには、壁に貼付けるNFCタグを用意します。まず、下図のようにAndroidを使って、NFCタグに階段情報(位置情報)を書き込みます。

次に、履歴記録用のAndroidアプリケーションを作りました。NFCタグに書き込まれている階段情報に通過時刻を加えて、Android内部のデータベースへ次々と格納して行きます。後で、AndroidをPCに接続すると、それらは自動的にPC画面に出力されます。机上で試行した場合のAndroid画面を以下に示します。(南階段の12Fから避難して4Fへ到着したところです。)

(補足1)NFC機能は、国内版Androidにはあまりありませんが、海外仕様のものには備わっていることが多いです。NFCのid(NFC IDm)を読み取ることは比較的簡単ですが、NFCへのデータの書込みと読込みは少しやっかいです。ハイレベルのAPIがまだ無いようですので。


(補足2)すでにこのブログにも投稿していますが、Androidアプリケーションのための優れたグラフィカル開発環境MIT App Inventorというのがあります。これが、このNFCに対応するというニュースがありましたが、現時点では、まだ公開されていないようです。期待したいと思います。

2012年8月31日金曜日

【追記 2012-9-3】(本件の避難モデリングとシミュレーションについて、国際会議ITS2012(開催地:Perth)で論文発表することになりました。ただし、下記で取得予定のデータは反映できません。間に合いませんので別の機会に発表します。)


後期がまもなく始まります。9月8日は卒研の中間発表会ですが、その途中で、もう一つ、イベントがあります。全学避難訓練です。避難の状況に関するいくつかのデータを得るために、図のような機器の準備をしました。しかし、なんでそんなに凝るのでしょうか?


避難のモデリングとシミュレーションをやっているためです。その実用性を高めるためには、実測データが必要になるのです。実測データをどのように生かすかということ自体も自明ではなく、良く検討する必要があります。

でも、とにかく、誰もやりそうもない実験をやることは楽しいものです。研究室の学生諸君にも応援してもらうことになっています。


(どんな機器なのかは、下図をクリックし、拡大して見てください。何をやろうとしているかは、ご想像いただけると思います。ここで使っているNFCタグとその関連Androidアプリケーションの可能性はまだまだあるように思います。)

2013年2月20日水曜日

会場は京都大学百周年時計台記念館

新幹線の窓越しに写した京都近郊の冬景色

京都大学ICTイノベーション2013というシンポジウムに参加しました。詳細は下記をご覧下さい。

http://ict-nw.i.kyoto-u.ac.jp/ict-innovation/2013/


今年で7回目ですが、私は最近5回の連続参加となります。発表は、ほとんどが京大の修士、博士課程の学生です。(たまに助教の先生の発表もあります。)本学の卒論、修論発表会が終わって間もなくなので、我々との比較も念頭にあります。冬の京都は寒いです。京都へ行った時の昼食はニシンそば、と決めています。それを食べてから、京大へ向かいます。


このシンポジウムは半日(午後いっぱい)のポスター展示です。発表タイトルは、数理的なもの(リーマン多様体、デジタルフィルタ、モンテカルロ法等)もありますが、どちらかというと文系的といいますか、Webサービスや入札戦略などのようなものが多いです。しかし、一見文系的な題目でも、実際は、数理的素養に裏付けられているという印象を受けます。


約50件あるのですが、そのうち約20件については、別室で5分間プレゼンテーションがあります。これがなかなかよろしい。ジャスト5分で打ち切り、質疑応答はありません。質問などは、隣の部屋のポスターの前でどうぞということです。5分間なので、どの発表もポイントを良く説明しています。それを聞くとポスターへ向かう気になるものが多いです。


ひとつ例をあげると、「モンテカルロ法のイノベーション」というのがありました。プレゼンテーションでは、正方形に内接する円を描き、乱数で正方形内にランダムに点を打ち、全点に対する円内に入った点の個数の割合で円周率を求める、という例を出しました。これは高校(あるいは中学)の数学です。私の書いたJavaテキストの例題にもそれがあります。普通の乱数を使うと、円周率= 3.2くらいにはすぐなりますが、それ以上の正確さにはなかなか収束しません。提案された(乱数系列に特徴がある)新モンテカルロ法では、急速に良い値に収束することを示していました。そして、その乱数の構造をたいへん分かりやすく3D表示していました。「難しいことを易しく説明する」のは我々にとって難しいですから、とても参考になる発表でした。なんらかの積分をモンテカルロ法で求める問題は多く、実用面での期待も大きいようです。


もう一つ、ちょっと違うタイプの発表についても書きます。「クラウドソーシングを用いた翻訳システムの実現」という発表です。私は、分散システムを専門としていますので、SETI@home のようなシステムに興味があります。これは、地球外知的生命体の可能性を調べるため、宇宙からの膨大な量の電波データを細かく分割し、世界中の多数のPCの空き時間を使って(小さな部分解析を統合して)解析するものです。今回の「クラウドソーシング... 」は、対象はまるで違うのですが、海外向けの膨大な取説(マニュアル)などの翻訳をこれと同じ考えで実行するものです。つまり、翻訳対象の元書類の一文づつを、Web上の見知らぬ多数の働き手(少しの時間だけ、アルバイトとしてWebで仕事をしたい人)に分担させる。それを集約してゆく仕組みです。


発表タイトルや内容は、情報関係をやっている我々に近いものが多いです。使っている手法や、プレゼンの仕方も参考になる点が多いです。外に目を向けることはいつでも必要のようです。

2014年1月30日木曜日

円錐の山と分かっていれば、一直線に山頂へ行ける

「必ずしも高い方向へ向かわない」戦略で山頂をめざす

実際の地勢図での蝶の山越えの様子

今年度の3年生のあるセミナーでは、「エージェント指向モデリングとプログラミング」を行いました。(事情により来年度は別のテーマとなりますが…)実施した例題の画像が気に入っていますので、ご紹介します。なんか美しい。


プログラミング環境としては、NetLogoを使用しています。NetLogoの基本的なことはこのブログでも紹介しています。ここです。


セミナーではテキストは使っていませんが、最終回近くになって、下記の英語書籍にある例題をやってもらうことにしました。


Steven F. Railsback, Volker Grimm :Agent-Based and Individual-Based Modeling: A Practical Introduction(この中の、Butterfly Hill-topping(蝶の山越え)という例題)


蝶は高い山をどうやって越えるのでしょうか。その戦略をいろいろと考察するようになっています。それを通して、エージェント指向モデリングの理解を深めるというものです。英語のテキストですが、何とか理解してやってもらいました。


(1)円錐の山ならば、….

下図では、高い円錐と低い円錐の山が2つあります。暗い部分が低く、白くなるほど高い場所を示しています。円錐と分かっていれば、行動は決まっていますね。とにかく、自分がいる近傍のもっとも高い方へ行けば一直線に山頂へ着くでしょう。


(2)山が円錐形とは限らない場合は….

蝶は、実際の山の全体像を知ることはできません。自分の近傍の情報しか得られないので、どの方向へ進むべきかは、戦略が必要です。とにかく現在地よりも高いところへ行くだけは、うまく行きません。「適当なある戦略」をもって、山を登ろうとする2匹の蝶を下図に示します。赤い蝶は、まさに紆余曲折しながらも、ほぼ高い方の山頂へ到着したようです。一方、黄色の蝶もなんとか、低い方の山頂へ近づいています。


(3)本当の山野のデータを使え!

次に、この英語のテキストでは、実際の(たぶん)米国のある山野の地勢図を使って、そこで蝶の山越えをさせています。下図では、白い部分の尾根がいくつかあります。暗い部分は谷になっています。青と赤の2匹の蝶を放しました。この実際の地形でも(2)でとっている戦略はある程度うまく行っているようです。少なくも青い蝶にとっては。


これは一例なのですが、セミナー、卒研では、簡単な想定だけでなく、できるだけ実際の環境、実社会の情報の元で実験と考察を行うことが必要です。それによって次のステップへ向かうきっかけが掴めるのではないでしょうか。

2014年7月22日火曜日

エレベータドアの上に巨大な計算尺が

拡大図

私が持っている計算尺で「2 × Pi = 6.28」

Androidの計算尺ソフトで「2 × Pi = 6.28」

7月20日は本学オープンキャンパスでした。そのレポートもすでにこのブログにあります。その時は、私は、出張で不在でした。その代わり、ちょっとめずらしいものを旅先で見つけましたのでここに書きます。


恐らく学生の皆さんは、聞いたことも触ったこともないかも知れませんが、技術計算の世界では、「計算尺」が使われていました。マンハッタン計画などでの計算でも実際使われていたとのことですから、米国にその痕跡があってもおかしくありません。


以下の写真は、私の泊まっていたMIT(マサチューセッツ工科大学)付近のホテルのエレベータ入口です。MITの三角旗の斜め上、エレベータドアの上に、巨大な計算尺があるではありませんか。


計算尺は、その後の関数電卓の出現で、すでに40年前には生産中止となったそうです。しかし、私は、持っていました。恐らく50年以上前に生産されたものです。以下の写真は、今、「2 × Pi = 6.28」をやって見たものです。計算尺は、乗算、除算、三角関数、対数、平方根、三乗根などの計算もできます。


特に日本製の計算尺は竹製(上図のものもそうです)で狂いが少ないなど、世界的に高い評価を得ていたようです。時代の流れですね。


しかし、新しい時代では、ちゃんとAndroidスマートフォンに「計算尺ソフト Slide Rule」があるじゃないですか!

2015年6月18日木曜日

C++演習時間中に教員がスマホ!

スマホ(Nexus6)で、C++課題をコンパイル&実行

C++プログラミング演習の授業中です。受講学生がノートPCでプログラミングしているなか、教員らしい人がスマホでなにやら見ているようです。不謹慎!と言われそうです。


しかし、違うようです!その教員が見ていたスマホの画面はこちら。スマホ(Nexus6)で、C++課題をコンパイル&実行


本日の演習問題のひとつを、スマホでコンパイル&ゴーしていたのです。確かに、画面の下の方には、「Compilation finished(コンパイル成功)」というメッセージが見えますね。この日のC++演習課題7題は全て、このスマホで、何ら問題なく、コンパイルと実行ができたそうです。


この教員にとっては、ノートPは必要ありません!(Nexus6くらいの画面サイズならかなり実用的に行けそうです。さらに画面の大きなタブレットならもっと良いかも。)


と、言うことは、スマホがあれば、電車の中でも、食堂などでも、C++プログラムを直したり、実行させたりと、動く(mobile & executable)教材となるのです。ゲームや、ラインだけじゃなく、勉強にもっとスマホを活用しよう!

2015年6月22日月曜日

NetLogoで再現した、ホタルの群れの自律的同期発光

6月中旬といえば、ホタルの季節ですね。電子ホタルの話題は、以前にもこのブログに書いたと思いますが、今回、改訂しました。下記の文献にあるものを参考にしました。


参考文献:

Wilensky, U. (1997). NetLogo Fireflies model. http://ccl.northwestern.edu/netlogo/models/Fireflies. Center for Connected Learning and Computer-Based Modeling, Northwestern University, Evanston, IL.


以下は、自作したNetLogo(マルチエージェントモデリング用ソフトウェア)プログラムです。全体で僅か32行でできました。ホタルのミニイラストもオリジナルです。Arduinoと連結して、LEDを光らせることもちょっとだけ含めてあります。


NetLogoで再現した、ホタルの群れの自律的同期発光


以下に、短いビデオを載せてあります。お楽しみいただければ幸いです。最初は、それぞれがバラバラに明滅していますが、次第に、自律的に明滅を揃えようとしていますね。最終的には、完全に同期(同調)して発光しています。


どのホタルがどのホタルからの発光を感知したかが分かるように改訂しました:

https://youtu.be/QrY9u9zMrFg

2016年9月1日木曜日

自作の人工知能(ディープラーニング)とAndroid

9月オープンキャンパスでデモします

ディープラーニング(人工知能)を小さく自作する

9月になってしまいました:

 漠然とした不安や焦りを感じることもありそうですが、元気を出して進もう!今回は情報技術に間する話題です。

 IBMのWatson(人工知能)が、テレビのクイズ番組に出演して、人間と対等に(もしくはそれ以上にgoodな)解答をしたのを見た方も多いでしょう。その仕組みの元は、機械学習・深層学習(ディープラーニング)と呼ばれるものです。

 以下に述べることは、まだまだ初歩のレベルと思ってください。例えば、6月に開催された「人工知能学会全国大会2016」でも、画像解析対象の深層学習関連として少なくとも約20件の先進的な論文が発表されており、今後の発展への期待が高まっています。


最新技術を具体的に体験する:

 これは重要ですね。私は、IBMのWatsonサービスや、GoogleのTensorFlowなどを(例題程度ですが)動かして、試用して、その素晴らしさの一端を知ることができました。


でも、ディープラーニングの仕組みをゼロから自作する:

 上記のようなディープラーニングは、(神経細胞網による学習・判断機能を模した)ニューラルネットワークと呼ばれる技術で作られています。IBM WatsonやTensorFlowは、それらの仕組みの詳細を知らなくても自分の仕事に適用することはできそうです。しかし、やはり、ニューラルネットワークでどのように学習しているのかを知ることは、今後の発展のために必要と思われます。

 そこで、それを自作します。というのも、幸いにもこれを指南してくれる書籍をAmazon Kindleで見つけ、それに従ってプログラミング言語Pythonでゼロから作りました。難しい数学は要りませんが、線形代数と微分の初歩(基礎)だけは必要です。


手書き画像6万枚を学習させ、書いた数字を認識させる:

 今回の自作では、性能は特に問いませんが、やることはちょっと本格的です。一例として、ディープラーニングでの定番の手書き数字画像(MNIST dataset)を学習させました。0〜9までの手書き数字画像約6万枚を学習させます。Mac Book Proでこの学習に約10分程度かかりました。しかし、その後は、新たに手書き数字画像を与えると、即座に、ほぼ正答を返すようになりました!


Androidスマホと連携させる:

 試作した以上、オープンキャンパスなどでデモしたくなります。そのためには、(1)スマートフォンAndroidの画面に指で数字を描き、(2)それをDropboxへ送信し、(3)PCで動く自作ニューラルネットワークへそれを渡して(28x28ピクセルに変換して)学習済みの情報から該当数字を判定させ、(4)Androidにその結果を表示させる。これが必要です。Androidでのこの作成には、ここでも、MIT App Inventorが強力な友になります。図のようなプロトタイプができました。


今後どうする:

 上記の結果を見ると(上段の図を拡大して見てください)、手書きした数字「5」は、0.999のという高い確実性(accuracy)で認識されています。また、「6」である可能性も0.029という低いaccuracyですが指摘されています。確かに、ちょっとだけ「6」に近いとも感じますので、この技術の可能性を感じますね。これは、数字画像解析に特化した方法ではなく、汎用性の高いものです。今後、3年生セミナーなどでも、学生諸君と共に「人工知能」に取り組んで行きます。


2016年10月28日金曜日

「食事する5人の哲学者」のオリジナル説明図

動作は停止状態にあるがデッドロックではない!

分散デッドロック検出(Chandy-Misra法)された状態!

 12月10日に、本学で「KAITシンポジウム」というイベントがあります。

http://www.sympo2016.cs.kanagawa-it.ac.jp


 そこではポスター(デモ)展示も行われます。その一つとして、以下の展示デモを予定しています。「食事する5人の哲学者」という有名な問題を扱います。これは、「共有資源への競合問題」です。問題の説明は、Wikiペデイアなどをご覧下さい。ここでは、5人の哲学者が食事をしようとしても、誰も先へ進めなくなる「デッドロック」状態の検出を主に問題としています。


 全体を見渡すことができれば、その検出は容易です。しかし、各哲学者は、他人の情報を知ろうとはしません。自分だけの世界にいますので、ひたすら待つだけです。もしかすると、他の哲学者が食事中であり、それが終わるのを待てば全体は動きだすのかもしれません。


 この問題は、以前、「i-Androidの会」でもプレゼンしたことがあります。その際も、各哲学者を1台のAndroidスマホに割り当てるという、真に現実感のあるエージェントで実現しようとしました。その際、フォークの取得に関する情報を、何とクラウド経由で交換していました。実装を簡単にするためでした。それに対して、今回は、5台のスマホ間の完全なローカルネットワークだけで実現したところが新しいです。

2017年2月3日金曜日

アメリカから郵送されてきた賞品

ステッカーの裏側に書かれた文字

Developer of the Future(未来の開発者)という響き

 何かのコンテストに入選して、その賞品が届くとなれば、誰でも(年齢を問わず)ワクワクして待ちますね。その入選については、下記のとおり、本学KAITニュースと情報工学科ブログでも紹介していただきました。


http://www.kait.jp/news/1336.html

http://blog.cs.kanagawa-it.ac.jp/2017/01/y.html


 このAndroidスマホアプリのコンテスト、学会発表などとはちがう、誰にも親しめる雰囲気があります。ちょっとくつろげる、ちょっと心暖まる要素も含まれています。これにふさわしい賞品が米国から届きました!先方は、"a fun holiday gift, it's pretty cool!"と言っていました。


 帽子と「Top Developer 2016」というステッカーが入っていました。少し前に、この賞品の写真が別途送られて来ていました。これを家人に見せたところ、「トランプ大統領の帽子に似てない?」と言われました。「う〜ん、似てるかもしれないが刺繍(ししゅう)が違うでしょ。Make KAIT Great Againじゃなく、Developer of the Futureとなっている!」


 Developer of the Future(未来の開発者)、よい響きです。学生のみなさんにこの言葉を贈りたい!