카드에서 증가할 수 있을지 없을지 예측하다

입문



종지


저는 개인적으로 딥러닝과 머신러닝을 배우고 싶어서 O'Reilly Japan에서 출판한0부터 시작하는 Deep Learning을 읽었습니다.
하지만 나 자신은 지식이 없고 특별한 곳이 없기 때문에 간단한 것을 만들어 보고 싶다.
그렇긴 하지만 모처럼 내 취미인 마작과 관련된 곳에서 하고 싶다.

저자의 규격

  • Python, 머신러닝 모두 초보자
  • 일반적인 PHP 및 루비 웹 작업
  • 환경

  • Python 3.6.0
  • bottle 0.12.13
  • heroku
  • 기능 개요


    만든 응용 프로그램은 다음과 같습니다.
    https://python-mahjang.herokuapp.com/index
    또한 원본 코드는 다음과 같다.
    https://github.com/naoki85/python_mahjong
  • 배패와 결과만 학습 대상으로 한다.
  • 아래 그림과 같이 배패를 모양에 따라 분해하여 각자의 무게에 따라 "추가"또는 "추가되지 않음"을 출력한다.
  • 결국'아갈리'의 결과이기 때문에 역할에 구애받지 않는다.

  • 구현 정보


    교사 데이터


    교사 데이터는 유튜브 등에서 전문 대국을 보고 배급과 결과를 수집했다.
    수량이 100이 아니기 때문에 이것은 계속 수집될 것이다.

    사전 처리


    패국을 아래 세 개의 노드로 분해하다.
  • 순자수(계단 배열)
  • 대자수(같은 카드 2장)
  • 암각수(같은 카드 3장)
  • 각 노드의 중요성을 배우다


    각 노드의 권중 참고0부터 시작하는 Deep Learning는 사다리법으로 평가한다.

    실제로 써봤어요.


    나는 유튜브의 어떤 인터넷 마작 동영상을 사용해 보았다.
    방송국
    결과
    상승 확률
    향상할 수 없는 확률
    한판
    올라갈 수 없다
    17%
    83%
    동 2 국
    올라갈 수 없다
    29%
    71%
    동삼국
    올라갈 수 없다
    7%
    93%
    동삼국 정통
    올라갈 수 없다
    17%
    83%
    동 4 국
    올라갈 수 없다
    33%
    67%
    남일국
    흠모하다
    20%
    80%
    남녘
    올라갈 수 없다
    26%
    74%
    남2국
    올라갈 수 없다
    17%
    83%
    남삼국
    흠모하다
    26%
    74%
    남4국
    흠모하다
    23%
    77%
    언뜻 보기에는 잘 예측할 수 있는 것 같지 않다.
    곰곰이 생각해 보면 마작은 4명 중 1명이 향상시킬 수 있는 게임이기 때문에 단순 계산 확률은 25% 이다.
    나는 교사의 데이터가 부족할 것 같아서 먼저 전공의 대국을 추가했다.

    재테스트


    같은 영상으로 다시 해봤어요.
    추가할 수 없는 결과만 비교합니다.
    방송국
    결과
    지난번에 증가하지 못한 확률
    재테스트의 실패 확률
    한판
    올라갈 수 없다
    83%
    73%
    동 2 국
    올라갈 수 없다
    71%
    64%
    동삼국
    올라갈 수 없다
    93%
    92%
    동삼국 정통
    올라갈 수 없다
    83%
    80%
    동 4 국
    올라갈 수 없다
    67%
    72%
    남일국
    흠모하다
    80%
    85%
    남녘
    올라갈 수 없다
    74%
    79%
    남2국
    올라갈 수 없다
    83%
    80%
    남삼국
    흠모하다
    74%
    79%
    남4국
    흠모하다
    77%
    73%
    10이닝 중 6이닝의'늘릴 수 없는 확률'이 떨어졌다.
    역시 교사 수치를 늘리면 결과가 바뀐다.

    학습 결과


    학습의 권중 매개 변수는 다음과 같다.
    제1요소가agari에 대한 공헌, 제2요소가agari에 없는 측에 대한 공헌.
    # 第一要素があがれる方、第二要素があがれない方
    # 重み
    [[ 0.17258578  -0.17396835]    # 順子
      [ 0.20088727 -0.20564398]    # 対子
      [-0.33262621  0.34681625]]  # 暗刻
    
    이 결과를 보면 순자, 대자는 아갈리에 공헌했지만 암각은 오히려 아갈리에 공헌하지 않았다.
    암각이 있으면 손이 좁아지기 때문인가요?
    편차 파라미터는 다음과 같다.
    이미 부가할 수 없는 사람의 편차가 너무 높다.
    [-1.07893278  1.07893278]
    

    도전하다


    지금 나는 아래의 두 가지를 과제로 삼아 공부하고 싶다.
  • 교사 데이터 증가
  • 레이어 노드 추가
  • 이번에 이 웹 응용 프로그램을 만든 것은 교사의 데이터를 늘리는 기초 위에서 쉽게 입력하기 위해서이다.
    나는 그 과정에서 파이썬의 경량 FW bottle을 배울 수 있어서 정말 좋다고 생각한다.

    마지막


    딥러닝도 배웠는데 뭘 해야 좋을지 모르겠어요.
    (원래 마작이라는 불확실한 요소를 제재로 삼는 것 자체가 터무니없다...)
    이를 위해 지적과 원래의 오류 등에 대한 지도가 있으면 메시지를 남겨주세요!
    (조언을 받을 수 있다면 나는 매우 기쁠 것이다.)

    좋은 웹페이지 즐겨찾기