Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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

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

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

Keisuke OGAKI

July 19, 2016
Tweet

More Decks by Keisuke OGAKI

Other Decks in Technology

Transcript

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  11. 精度は??
    •  学習に使ってない
    データで73.7%当
    てられる
    •  2時間で学習できる小さめ
    のネットワークにしてるの
    でまだまだいけるはず
    •  ACとWA半々
    学習に使ってないデータ
    学習にも使ったデータ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  15. 実は一番大事だったことは!
    コンパイラを使うとデータを増やすことができる!!!!
    1.  AC: 200個, WA:54個 … なにがディープやねん..
    2.  ただしプログラムには、変数名などの冗長性がある
    3.  文字をスワップして(aを全部zにしちゃう、みたいな)、コンパイルエ
    ラーが出なければ、それは、プログラムの挙動には関係のない変
    更だと言える!
    4.  AC, WAそれぞれ数十倍することができる

    View Slide

  16. 実は一番大事だったことは!
    コンパイラを使うとデータを増やすことができる!!!!
    -> 僕の大好きなぱいちょん氏…
    python C++, コンパイラ情報なし C++, コンパイラ情報あり
    テストデータ100%達成し
    ちゃうのでもう何も学んでく
    れない
    テストだけぐんぐん上がっ
    ていく

    View Slide