ブラウン大学のコンピュータ・サイエンス。機械学習からサイバーセキュリティまで

留学体験記  2022年07月26日

みなさんこんにちは。ブラウン大学2年生のKentaです!

今回の記事では、今学期(2022年春学期)に僕がとっている科目を紹介していきたいと思います。

今学期は、履修したいコンピュータ・サイエンスの科目が複数あったので、取捨選択するのではなく、全部とることにしました。

それに加えて、ブラウンで唯一の必須であるWRITの科目(エッセーなどをたくさん書く科目)をまだとっていなかったので(2年に1つとらなければなりません)、それも履修することにしました。

データ・サイエンス(Data Science)

莫大なデータをいかに理解し、駆使し、平等に使うかを勉強する科目です。

僕がこの科目を履修したかったのは、やはりまずデータをどのように利用するのが一番いいかを勉強したかったのと、そしてそれをどのように使えば人に役立つアプリケーションがつくれるのか考えたかったからです。

いままでに取り組んだ宿題をいくつか紹介しましょう

SQL

SQLとはStructure Query Languageの略で、簡単にいうとデータベースと、ユーザーである私たちとのコミュニケーションを可能にする言語です。

SQLを駆使することで、データベースにデータを挿入したり、データを修正したり、上書きしたりと、さまざまなことが可能になります。

この宿題ではSQLを使って、データベースの中で一定条件を満たすユーザーを抜き出す練習などをしました。たとえば友だちが3人以上いて、朝早起きで、映画を1か月に3本見る人といったユーザーです。

SQLはいろいろな会社がデータベースを管理する際に使っているので、実際それがどう機能するかを見られたのはとてもよかったです。

Web Scraping

スクレーピングとは英語で「かき集める」という意味があり、ウェブスクレ―ピングは単純にウェブサイトから情報を抜き出す行為を指します。

この宿題では、音楽配信サービスのサイトから曲やアーティストの情報をスクレーピングし、それを使ってユーザーの好みに合わせて、楽曲をお勧めするアプリケーションをつくりました。

ウェブスクレーピングはけっこう日常的に行われていて、とても便利なスキルであるため、今回勉強することができてとてもよかったです。

Map Reduce

Map Reduceは少しテクニカルになってしまうのですが、簡単に説明すると、大量の作業をいかに部分的に分け、効率よく複数の仕事人に分担するかというプログラミングモデルで、Googleが開発したことで知られています。

膨大な映画データを使って、ユーザーのレビューをもとに、他の映画をお勧めするアプリケーションをつくりました。僕はかなりこの宿題は好きでした。データは基本的には巨大なサイズであるため、このようにデータの細分化・並列処理を学べたのは将来に役立つ気がします。

コンピュータ・ビジョン(Computer Vision)

みなさん自動運転や画像認識がどのような仕組みになっているかご存知ですか?

この科目は、コンピュータがいかにモノを「認識」するかに焦点を当てていて、機械学習の中でも、ビジュアルを重視したものになっています。

僕がこのクラスを履修したかった理由は、先学期とった深層学習のクラスで軽くコンピュータ・ビジョンに触れた際、とてもおもしろいと思ったからです。クラスで取り組んだことをいくつか紹介します。

Feature Matching

この宿題では、プログラムがどのようにして2枚の写真の共通の特徴を認識するかがメインのタスクでした。簡単な手順を説明すると

  1. 画像の勾配から角を見つける(Harrisのコーナー検出)。
  2. その求めた角からSIFTというアルゴリズムを使って、角の周りの特徴を捉え、ベクトル(表現みたいなもの)にする。
  3. 2枚目の画像の角と1枚目の画像の角を照らし合わせ、ある程度似ていたら、似ている認定をする。

この手順だけで以下の画像のように、コンピュータは2つの画像の共通項を求めることができるのです。

feature matching
Feature Matching

Camera Geometry

みなさん二次元の画像を三次元で表したいと思ったことはありませんか?

この宿題では、まさにその二次元の三次元化を扱います。

考えかたはきわめてシンプルで、複数のカメラがあり、同じ物体を異なるアングルから捉えたら、複数の座標から三次元空間における座標を求めることができるというものです。

この宿題では、カメラの構造など、いままで知っているようで知らかったことに触れることができて、とても新鮮でした。

二次元の三次元化
二次元の三次元化

Scene Classification

与えられた画像が何を示しているのかを当てるのがScene Classificationです。

たとえば寝室の画像に対して、コンピュータは何を基準にその画像を寝室と認識するかといった問題を取り扱います。

このタスクを達成するにはBag of Wordsというアルゴリズムを使う必要があります。

簡単に説明すると、あるもの(寝室、公園、建物など)を表す単語リストをまずつくります。それで実際に分類したい画像を複数の単語で表します。単語リスト1つひとつをその複数の単語たちと照らし合わせて、共通部分が一番多い単語リストが、その分類したい画像の分類先となるわけです。

これを使うと以下のように画像を分類することができます。

scene classification
Scene Classification

機械学習(Machine Learning)

このクラスはコーディングがたくさんというよりも、機械学習がどのようにして成り立っているかを数学的に理解することに重点をおいており、さまざまなコンセプトの証明などを扱います。数学7対コーディング3といった感じで、機械学習のさまざまなモデルの実装を行いました。

いままで深層学習など機械学習系のクラスをとってきましたが、いまだにその裏の数学を理解していなかったため、今回この科目を履修することにしました。

数学の証明問題は以下のような感じで、機械学習のモデルを使って、何次元のデータなら学習できるかの証明をしたりしました。

証明問題
数学の証明問題

コーディングのほうは、たとえばSVMや決定木の実装を行い、その結果をもとにレポートを書いたりしました。レポートでは私たちの実装したモデルが実際どのように使われていて、どのような危険性を秘めているかなどの質問に答える機会もあって、とても実践的でした。

サイバーセキュリティと国際関係学(Cybersecurity and International Relations)

これが、冒頭に紹介したWRITの科目です。名前の通り、サイバーセキュリティと国際関係について勉強するクラスで、トピカルなウクライナ情勢もあって、とても興味深いクラスとなりました。

エッセーを書くうえで、さまざまな国(日本も含め)のサイバー空間におけるセキュリティ対策を知ることができたので、とても勉強になりました。

それに加え、将来プログラマーになりたい僕としても、プログラマーがサイバー空間においてどのような役割をもっているのか、責任感のあるふるまいとはどういうものなのかを考えるいい機会にもなりました。

今学期履修している科目はすべてコンピュータ・サイエンスの分野になってしまいましたが、とても楽しく勉強できています。次回は、授業外のことについて書いていきたいと思います!

Kentaくんの記事一覧

このページが気に入ったら→ 

Facebook

Twitter

留学相談 留学講演会
留学中の就職支援
栄陽子の書籍
栄 陽子の留学コラム