自然言語処理によるプログラミングコンテストのコード自動採点

 自然言語処理によるプログラミングコンテストのコード自動採点

社内ハッカソンで実施した内容です

A82e268e52c06ad69b83f1a251c682d4?s=128

Keisuke OGAKI

July 19, 2016
Tweet

Transcript

  1. 俺のコードのど こが悪い? あるいは二次元美少女がプログラミングを教えてくれる未来を夢見て

  2. プログラミングの問題です (Atcoder Beginner Contest 041 問題A)

  3. サンプルデータと か言わずに、コード を直接採点してほ しくね?

  4. コードに点数、つけ てみました

  5. 出力結果: AC 50点がボーダーなので、ACです

  6. 出力結果: WA 点数極端すぎワロタ

  7. 出力結果: AC 点数極端すぎワロタ

  8. 出力結果: WA 点数極端すぎワロタ

  9. 真面目な話します 機械学習したい人向けのちょっといい話

  10. しくみ LSTMっていう、不定長の入力を受けられるニューラルネットワークを 使います LST M LST M AC / WA

    #include <iostream> ….....
  11. 精度は?? •  学習に使ってない データで73.7%当 てられる •  2時間で学習できる小さめ のネットワークにしてるの でまだまだいけるはず • 

    ACとWA半々 学習に使ってないデータ 学習にも使ったデータ
  12. 実は一番大事だったことは! コンパイラを使うとデータを増やすことができる!!!! 1.  AC: 200個, WA:54個 … なにがディープやねん.. 1.  AtCoderといえども、全言語合わせても数百人しか参加者が

    いない
  13. 実は一番大事だったことは! コンパイラを使うとデータを増やすことができる!!!! 1.  AC: 200個, WA:54個 … なにがディープやねん.. そのまま学習すると。。。。?

  14. 実は一番大事だったことは! コンパイラを使うとデータを増やすことができる!!!! 1.  AC: 200個, WA:54個 … なにがディープやねん.. そのまま学習すると。。。。? テストだけぐんぐん上がっていく。

  15. 実は一番大事だったことは! コンパイラを使うとデータを増やすことができる!!!! 1.  AC: 200個, WA:54個 … なにがディープやねん.. 2.  ただしプログラムには、変数名などの冗長性がある

    3.  文字をスワップして(aを全部zにしちゃう、みたいな)、コンパイルエ ラーが出なければ、それは、プログラムの挙動には関係のない変 更だと言える! 4.  AC, WAそれぞれ数十倍することができる
  16. 実は一番大事だったことは! コンパイラを使うとデータを増やすことができる!!!! -> 僕の大好きなぱいちょん氏… python C++, コンパイラ情報なし C++, コンパイラ情報あり テストデータ100%達成し

    ちゃうのでもう何も学んでく れない テストだけぐんぐん上がっ ていく