ぽきたに 〜ありきたりな非凡〜

日々の独り言とちょっとした発信

【合格体験記】豊橋技術科学大学大学院-工学研究科-情報・知能工学専攻に合格しました。

どうも、こんにちは。たっきーです。

豊橋技術科学大学大学院に受かったので自己満合格体験記を書きます。

僕自身、合格体験記を参考に受験に挑んだので、これから受験する人の参考になれば幸いです。

f:id:tacky0612:20170915182327j:plain

豊橋技術科学大学


 

 

豊橋技術科学大学とは

豊橋技術科学大学(とよはしぎじゅつかがくだいがく、英語: Toyohashi University of Technology、公用語表記: 豊橋技術科学大学)は、愛知県豊橋市天伯町雲雀ヶ丘1-1に本部を置く日本の国立大学である。1976年に設置された。大学の略称は技科大、豊技大、TUT、Toyohashi Tech。 

豊橋技術科学大学 - Wikipedia

 

僕の個人的なイメージは、高専生の編入先。国立大学なので学費が安い。長岡科学技術大学との姉妹校。

学部生の大学院進学率が高く、殆どの人は内部進学するらしい。

豊橋、駅前はめっちゃ栄えてるのに豊橋技術科学大学校舎の周りは田舎。

 

はじめに

僕の能力とか↓

 

…あんまり参考にならないかもですね(?)

学部は機械科ですが、大学院では情報系のことを学びたいと思って専攻を換えました。

故に、受験科目に情報系の専門知識が必要なのでそこをカバーするのが大変でした。

研究テーマも研究室の教授に情報系の研究がしたいってことで深層学習の研究のテーマを頂いた。

あと、今通ってる大学の院だと横の繋がりがほぼゼロなことと、私立で学費が高いので、国公立である豊橋技術科学大学を受験しました。(あと、ウチの大学院いってる人がしんどそう)

大学院では機械学習・AIにの分野について研究したいと思っています。

 

 

 

受験について

日程 (2017年)

出願期間    7月18日〜7月24日

受験日     8月31日

合格発表    9月15日

 

受験方式    一般入試(学外)

試験科目    英語(60分)・基礎科目(90分)・面接

ちなみに基礎科目は数学(解析学代数学・確率論)と情報(プログラム・アルゴリズム)です。

 

 

 

受験勉強

過去問が郵送で請求できるので2年分入手した。

過去問題の傾向は(2年分だが)は、

 

基礎科目(情報・知能工学専攻)

  1. 微分方程式
  2. 確率
  3. 専門(情報)

外国語(英語)

  1. 長文読解
  2. 空所補完
  3. 文法の誤りを見つける
  4. 空所並び替え

という構成になっている。

過去問に解答解説は用意されていないのでちょっと困った。

 

数学対策について

数学力は問題を解かなちゃあがんない。

解説を読んで満足せず、一回解いてみるってのがマジで大事。

数学力に関しては名工大NAIST受験の際にガチったのである程度身に付いていた。

 

過去問の傾向から、(1)で解いた問題をヒントに(2)を解くみたいな問題で、基礎をしっかり固めていればそれほど難しくない。初見で完答できた問題もあるぐらい。

 

 

僕が参考にした数学本

石村さんの「やさしく学べる」シリーズ、マジでいい。本気出せば一冊2日で範囲を網羅できる。大学の講義受けてる時代から分からないを無くすために活用していた。

色んな本に手を付けてしまうのもアレなのでこれを完璧にすることと過去問を解くという方法で受験勉強した。(というか、過去問見た感じ基礎がしっかりしていれば対応できると思った。)

やさしく学べる線形代数

やさしく学べる線形代数

 
やさしく学べる微分積分

やさしく学べる微分積分

 
やさしく学べる微分方程式

やさしく学べる微分方程式

 

 

専門科目対策について

 機械科出身なのでほんとにわからないことだらけだった。

C言語はそれなりに理解しているつもり(4週間のインターン行った際にECUのCソースを弄らせてもらった)だったが、講義で誰かに教わった経験がないのでツライ。

あと、アルゴリズム周りがほんとうに分からない。(ヤバイ)

とりあえず、過去問を情報系に通ってる他大の人に見せて教えてもらった。

 あとは適当に技術書っぽいの眺めた。

 

 読んだ本

アルゴリズムとか計算量とか対策。

アルゴリズムを、はじめよう

アルゴリズムを、はじめよう

 

 

 研究室の教授から借りた本(正直、じっくり読んでいない。)

アルゴリズムと計算量 (計算機科学・ソフトウェア技術講座 5)

アルゴリズムと計算量 (計算機科学・ソフトウェア技術講座 5)

 

 

僕が趣味でC言語学んだ時に読んでた本

しろうとクマくんとC言語の授業

しろうとクマくんとC言語の授業

 

 

 

英語について

驚いたことに全問選択肢有り。

TOEIC515点の僕が言うのもアレだが、案外、簡単ではあった。

難易度で言うと、TOEIC以下センター試験以上。(あんまり適切な表現ではないかもしれないが、僕はそう感じた。)

TOEICをベースにし、試験問題はTOEICとは傾向が違うので過去問を参考にしつつ勉強した。

正直、英語に関してはあまり対策していない。

 

読んだ英語本

 

これ読んだけど600点取れんかったわ。クソ。(単に僕の英語力が低いだけ)

はじめての新TOEICテスト いきなり600点が取れる本

はじめての新TOEICテスト いきなり600点が取れる本

 

 

 TOEIC公式過去問。高い。高級品。

TOEICテスト公式問題集 新形式問題対応編

TOEICテスト公式問題集 新形式問題対応編

 

 

 長文対策に読んだ本

スピード英語長文 Level 3―短期で攻める

スピード英語長文 Level 3―短期で攻める

 
スピード英語長文 Level 4―短期で攻める

スピード英語長文 Level 4―短期で攻める

 

 

事前の研究室訪問等

やってない。(迫真)

大学院に進学する場合、 研究室に配属って流れになるので事前に研究室の教授にアポをとって訪問するのが普通らしい(名工大を受験した際は研究室訪問を行った。)が、今回の受験では研究室訪問は行ってないです。

7月8月、大学院に受験して2校も落ちてしまい、精神的にまいっていて外にあまり出たくないって気持ちだった。

ただ、やっぱり研究室訪問を行うと専門の人のお話を伺えるのでめちゃめちゃ為になるのでやったほうがいい。研究室の雰囲気や先生の人柄も知れるので。

 

 

試験当日

英語は過去問通りの内容。英語雑魚の僕でもほとんど解けた。ありがとう神様。

数学は傾向が変わってて大問1に線形代数が来ていた。特に、射影行列の問題があってほとんど解けなかった。(下手したら大問ひとつ分落としたかも?)以降は例年通り。

専門科目はjavaの問題とC言語の虫食い問題みたいな問題だった。javaを触った経験はゼロだったから推測して解くしかなかった。C言語の問題は雰囲気で解いた。

昼休憩を挟んで面接。面接の控室で緊張感に押しつぶされそうだったので、初対面だけど他の受験者の方とお喋りして緊張感は少し和らいだ。

面接官は3人 。面接時間は15~20分程度。受験者一人毎に面接を行う。

 

面接で聞かれたことまとめ(覚えている範囲で)

  • 筆記はどうでしたか?
  • 志望動機について
  • 現在の研究について
  • 機械学科だけどなぜ情報系に進学?
  • 得意科目について
  • 第一志望?
  • 部活について
  • 豊橋技術科学大学の印象について
  • 配属希望の研究室
  • 長所短所
  • 使えるプログラミング言語
  • なにか作ったものがあれば
  • C言語は得意?
  • 緊張してる??
  • プログラミング得意そうだね(そんなことはない)

構えてたより、一般的な内容が問われて安心した。(もっと専門的なことが聞かれると思ってた。) 

面接練習は一回も行わずでのチャレンジだったので、緊張はしていたが名工大NAISTの面接よりかは全然気持ちよく自分のことについて話すことが出来た。

 

 

感想・まとめ

数学での大コケがあったから合格発表まで少し不安だったけど、なんとか受かってって良かったです。

大学院試験は願書締め切りがはやいので3年次には志望校の出願時期を把握しておくことと、試験科目について把握しておくことが重要。

過去問と傾向が変わることがあるので、過去問が解けるからと慢心せず、出題範囲が確認できる場合はその範囲を網羅しておく。(当たり前か。)(僕は慢心した。)

面接は運。話しやすい面接官が当たればラッキー。

 

なにか質問等ありましたらTwitterにどうぞ。 

 

 

 

大学院合格おめでとうの会

いいことがあった日にはお酒を飲みましょう。

 

ARピタゴラスイッチのプログラム実装メモ(Arduino×Processing)

どうも、こんにちわ。たっきーです。

ちょっとけんきうの息抜きにARピタゴラスイッチを作ってみたのでメモ。

f:id:tacky0612:20190310034503j:plain

全体図

 

はじめに

1個下の学生さんが課題でARピタゴラスイッチなるものを作らなきゃいけないらしく面白そうやんけwって感じでプログラム周りを手伝ったのでそのメモ。

半日足らずで書いたので雑クオリティなの許してください。

 

ARピタゴラスイッチとは

こんなやつ。

www.youtube.com

拡張現実ピタゴラ装置って呼ばれたりもする(?)

動画見てめっちゃ面白そうやんけってなってモチベ爆上げ。

 

実行環境と使用機器

  • macOS Sierra 10.12.5
  • Arduino 1.8.3  
  • Arduino UNO
  • Processing 3.3.5
  • サーボモータ GWSサーボ MICRO/STD/F(フタバ)
  • タクトスイッチ
  • ミニブレッドボード
  • その他小物

 

【永久保証付き】Arduino Uno

【永久保証付き】Arduino Uno

 
Amazonベーシック USB2.0ケーブル 1.8m Aオス-Bオス 7HUA

Amazonベーシック USB2.0ケーブル 1.8m Aオス-Bオス 7HUA

 

Arduino - Software

Download \ Processing.org

 

 

参考にしたサイト・本

 

たのしくできるArduino電子制御

たのしくできるArduino電子制御

 

Processing.org

 

 

 ブレッドボード図

f:id:tacky0612:20170726173642p:plain

こういうの得意じゃないので間違ってるかも(?)

とりあえず、こんな感じ

f:id:tacky0612:20170726174342j:plain

スイッチ部分

f:id:tacky0612:20170726174431j:plain

全体像

f:id:tacky0612:20170726174558j:plain

 

Arduinoスケッチ

 

#include <Servo.h>
Servo myservo;

int pin7=7;

void setup()
{
Serial.begin(9600);
myservo.attach(9);
pinMode(pin7,INPUT);
}

void loop()
{
myservo.write(0);

if(digitalRead(7) == LOW)
{ Serial.write('a'); delay(2500); Serial.write('b'); myservo.write(180); delay(3000); } }

 こんな感じ。

スイッチが押されたらシリアルボードに'a'と書き込んで、指定時間遅らせてからサーボを回し、終わるタイミングで'b'を書き込むってだけのスケッチ。

 

Processingのプログラム

import processing.serial.*;
import cc.arduino.*;
import ddf.minim.*;
Serial port;

Arduino arduino;
Minim minim;

AudioSample oh;


float x,y;
float velx=10.0;
float vely=0.0;
float gravity=1;
float reaction=1;
float damp=0.9;
float height=758;
PFont myFont1;

void setup(){
  fullScreen();
  background(255,105,200);
  noStroke();
  fill(255,255,255,255); 
  x=y=0.0;
  myFont1=createFont("",100);
  port = new Serial(this, "COM3", 9600);
  port.clear();
  minim = new Minim(this);
  oh = minim.loadSample("oh.wav",2048);
}

int j = 0;
int i=0;
void draw(){
  j =  port.read();
  if (j == 'a') 
  {
    i = 1;
    oh.trigger();
  }
  if(j == 'b')
  {
    oh.trigger();
  }
  if(i == 1){

  fade(false);
  
  ellipse(x,y,100,100);
  
  vely+=gravity;
  
  x+=velx;
  y+=vely;

    if(x<0)velx=-velx;

  
  if(y>height){
    vely*=-reaction;
    velx*=damp;
    y=height;
  }  
  textFont(myFont1);
  fill(255,255,0);   
  textAlign(CENTER);   
  text("5000兆円欲しい!",663,378); 
}
  else
  {
    
  }
}

void fade(boolean _fadeFlag){
  if(_fadeFlag){
    fill(255,10);
    rect(0,0,1000,0);
    fill(0);
  }else{
    background(255,105,200);    
  }
}

こんな感じ。

↓を追加する必要あり。

Arduino Playground - Processing

Minim | Compartmental

Arduinoから受け取った信号に対応してアニメーション開始したり音出したりする。

 

commons.nicovideo.jp

↑からダウンロードして、oh.wavって名前で保存して、.pdeファイルと同じディレクトリ内に入れる。

 

実行動画

 声がウザいのは気にしない。

 

上手いこと行ってよかった()

 

最後に

ARピタゴラスイッチめちゃ面白い(語彙)

Arduinoの制御、Processingの使い方の初歩的な部分を学ぶことができるのでオヌヌメです。

もっと他のセンサーとか使ってギミックを追加してみたさ深い。

【永久保証付き】Arduino Uno

【永久保証付き】Arduino Uno

 
Arduinoをはじめようキット

Arduinoをはじめようキット

 

 

らぼの日常

 

 

 

 

 

初心者による初心者の為のTensorFlowを使用したMNIST for ML Beginnersを解説。

どうも、たっきーです。
機械学習Hello worldと呼ばれるているMNISTってやつを試してみたので覚書き。
 

はじめに

今回は本当に触ってみただけなので、中のロジックとか数式の意味とか割りと理解してないし、ブラックボックス的にTensorflowを使いました。
どのようなロジックで手書き文字の学習がされているのか正直わからん。(ザコ)
TensorFlow公式ドキュメントを参照。
 

MNISTとは

f:id:tacky0612:20170618225924p:plain

「Mixed National Institute of Standards and Technology database」の略で、機械学習Hello worldと呼ばれるているヤツ。
アメリカ国立標準技術研究所(National Institute of Standards and Technology, NIST)が提供するデータ。
28×28の784個のピクセルの0〜9の手書き数字のデータセットのこと。55000個の学習データ (mnist.train)と10000個のテストデータ (mnist.test)と5000個の検証用データ (mnist.validation) が画像データとメタデータとしてどの数字を表すのかをラベルデータが与えられている。
今回、手書き文字の推定をするプログラムを作りたい。
 
環境の整え方などは前の記事を参照。
 

 

TensorFlowの処理の流れ

  1. TensorFlow読み込み
  2. 式を立てる(モデル)
  3. セッションを開始
  4. 式を実行(run)

 

機械学習の3ステップ

  1. 現象をモデル化する
  2. モデルを最適化するパラメータを求める
  3. 学習したモデルを使用して推定・分類

 

このチュートリアルで何をするか

MNISTデータとソフトマックス回帰について学ぶ。
イメージ内のすべてのピクセルを調べることに基づいて、数字を認識するためのモデルを作成する。
TensorFlowを使用して、学習データを見て数字を認識させるようにモデルを訓練します。
テストデータでモデルの精度をチェックする。
 
 

実装

早速チュートリアルのコードを実装してみる。
from tensorflow.examples.tutorials.mnist import input_data
 
mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)
MNIST_data/ がダウンロード先。
まずはこのコマンドで必要なものをダウンロード。
 
import tensorflow as tf
TensorFlowをtfとしてインポート
x = tf.placeholder(tf.float32, [None, 784])
placeholderという入れ物を用意する。イメージ的にC言語で言う int i; みたいなもんかな?(違う?)
 
一応よく使うヤツなので使い方↓
placeholder(
    dtype,                       #https://www.tensorflow.org/api_docs/python/tf/DType
    shape=None,            #与えられる行列の形状(オプション)。形状が指定されていない場合は、任意の形状のテンソルを供給することができます。
    name=None              #操作の名前(オプション)。
)

次に、変数を定義。

W = tf.Variable(tf.zeros([784, 10]))
b = tf.Variable(tf.zeros([10]))
Variableは変数のこと。zerosで0で埋めてあげる。
Wは重み、bはバイアス。
10は0〜9の数字があるので。
y = tf.nn.softmax(tf.matmul(x, W) + b)
確率を格納する為の変数をyとする。matmul は行列の掛け算。
y_ = tf.placeholder(tf.float32, [None, 10])
ここ(y_)に正解データ(ラベルデータっていうのかな?)を格納する。
cross_entropy = tf.reduce_mean(-tf.reduce_sum(y_ * tf.log(y), reduction_indices=[1]))
cross_entoropyに推定値とラベルデータの差分
ぶっちゃけこの計算のロジックはわからん。教えてくれ。 
train_step = tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy)
train_stepが学習ステップ。重みを最適化して更新する。
GradientDescentOptimizerは勾配降下法のことっぽい。()の中は学習率。
参考までに、TensorFlowのOptimizer一覧(

https://www.tensorflow.org/api_guides/python/train#optimizers

 )
cross_entropyをminimizeで小さくなるように学習する。 
sess = tf.InteractiveSession()
tf.global_variables_initializer().run()
これはオマジナイ。心を無にするのだ。
for _ in range(1000):
  batch_xs, batch_ys = mnist.train.next_batch(100)
  sess.run(train_step, feed_dict={x: batch_xs, y_: batch_ys})
for文で1000回、バッチ(100個のランダムで選択したデータを入れたもの)でtrainする。feed_dictでxにbatch_xs, yにbatch_ysを指定する。placeholderには、feed_dictを通じて値を外挿できる。
correct_prediction = tf.equal(tf.argmax(y,1), tf.argmax(y_,1)) 
結果の評価をする。推測とラベルデータの差を評価。argmax()で行列の中で最も大きな値(確率が一番大きいやつ)を持っているところを一つ取ってくるヤツ。
equal(a,b)でa=bならTrue,  a≠bならFalseを吐く。
accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))
reduce_meanで精度の平均値を出す。
True,Falseでは計算出来ないのでcastで数値(割合)に変換。
print(sess.run(accuracy, feed_dict={x: mnist.test.images, y_: mnist.test.labels}))
print文で計算結果を出力する。
 

f:id:tacky0612:20170618231225p:plain

 
ちなみに僕は91.87%の精度でした。
 
 

だがしかしこれはまだ深層学習ではない

だがしかしこれはまだ深層学習(Deep Leaning)ではない。(大事なことなので(ry)
 
 

 

TensorFlowで学ぶディープラーニング入門 ~畳み込みニューラルネットワーク徹底解説~

TensorFlowで学ぶディープラーニング入門 ~畳み込みニューラルネットワーク徹底解説~

 

 

 

深層学習 (機械学習プロフェッショナルシリーズ)

深層学習 (機械学習プロフェッショナルシリーズ)

 

 

 
 

最後に 

なんとなく考えとか整理するのに書き始めたけど、アレ(遅い)。
こうやってブログに起こすのめんどくさいだけで、実はTensorFlowのチュートリアルは一通りやった。
ただこうやって書いてて実は理解してなかったところとかを発見出来たりするのでよい。
ちょっと長いコード書くとなるとPythonインタラクティブシェル使うのダルいのでJupiterNorebook使うとよい。(よい。)
Pythonはコードが読みやすいのでよい。おっPython
 
公式ドキュメントの最後らへんに

Is that good? Well, not really. In fact, it's pretty bad. This is because we're using a very simple model. With some small changes, we can get to 97%. The best models can get to over 99.7% accuracy!

 

ってあるけどかっこよすぎん?(?) まだ力を秘めているボス的な感覚。
TensorFlow「まだ本気じゃねえんだぜ…!」って。
 
 

そういや今年の6月は雨が少ないですね。

 

スポンサードリンク