これは、1 から 100 までの数値を出力するプログラムを書くという問題です。ただし、3 で割り切れる数なら “fizz”、5 で割り切れる数なら “buzz”、15 で割り切れる数なら “fizz buzz” と出力しなければなりません。
この簡単なコーディング問題は、2 つの if 文を書き、個々の数値が 3 または 5 で割り切れるかどうかをチェックすれば解決できます。
もっとも、それはあなたがソフトウェア エンジニアでデータ サイエンティストの(そしてグーグラーでもあった)Joel Grus 氏でなければの話です。
Grus 氏は最近のブログ ポスト “
Fizz Buzz in TensorFlow”(TensorFlow による Fizz Buzz)で、就職面接に行って Fizz Buzz テストを解くように求められたときのことを想像しています。そのとき彼は、自明のアプローチを取らず、Google が開発したオープンソースの機械学習ライブラリである TensorFlow を使います。
話が面白くなってくるのはここからです。
面接官 : 何かお手伝いしましょうか?
Grus : いえいえ、大丈夫です。まず、標準的なインポートから始めます。
面接官 : えーと、あなたは問題が fizzbuzz だということがおわかりですか?
Grus : もちろんです。それではモデルに移りましょう。隠れ層が 1 つの単純な多層パーセプトロンを使おうと思っています。
なぜ、科学計算用 Python ライブラリとして有名な
NumPy と TensorFlow を使っているのでしょうか。それは、個々の数値に対して fizz または buzz を返すべきかどうかをコンピュータに予測させるために、訓練データセット(実際の Fizz Buzz テストの結果)を使ってコンピュータを訓練し、多層パーセプトロン(ニューラル ネットワーク)を構築しようとしているからです。
さて、結果はどうだったのでしょうか。ぜひブログで続きをご覧になり、Grus 氏がどうやって TensorFlow によるシンプルなニューラル ネットワークを作り、Fizz Buzz の数値を予測したのか、その仕組みをチェックしてみてください。
イメージや音声認識のような AI っぽい問題だけでなく、とても単純な問題に対しても、機械学習のテクニックがどのように活用されているのかを学べます。
TensorFlow を使った Fizz Buzz の解法は、Fizz Buzz 解決の最良の方法にはなりませんが(Jeff Dean は、もっと高度なアルゴリズムを使うことを
推奨しています^^)、これは人間に問題を解決させることとコンピュータに問題を解決させることの本質的な違いを示す、気の利いた話であることに変わりはありません。
0 件のコメント :
コメントを投稿