방개
비밀번호를 잊어버리셨나요?

질문

오토핫키에 머신러닝 쓸 수 있나요?

    • 글자 크기

??

    • 글자 크기
댓글 3
  • 2020.10.14 01:16 댓글

    물론 가능합니다. 라이브러리 갖다가 쓰시는건 뭐.. 그냥 가져다가 쓰시면 되겠고요, 직접 구현하시려면 행렬(Matrix) 연산 라이브러리를 이용하여서 3계층 신경망부터 구현해보시면 되겠습니다. 언어는 부가적인 요소이지, 하는 일은 어느 언어로든지 할 수 있습니다.

     

     

    ========== 주절주절 ===============

    직접 구현에 대해서 간단히 적어보면.. 입력 값을 하나하나씩 받는 배열을 "입력 노드"라고 하겠습니다. 예를 들면 사진을 학습시키겠다면 각 픽셀의 색상값 등이 되겠지요. 음성을 학습시키겠다면 파형값이라던가요.

    그리고 어느 결과에 가까운지 최종적으로 분류되는 배열을 "출력 노드"라고 하겠습니다. 사진이라면 얘가 고양이라면 출력노드[1]에, 개라면 출력노드[2]에 더 많은 값을 가지는 식으로 나타납니다.

    그리고 실질적으로 학습이 이루어지는 구간은 입력노드와 출력노드 사이의 '은닉노드(Hidden nodes)'가 담당합니다.

    입력노드 > 은닉노드 > 출력노드로 데이터가 흐르며 학습이 되는 구조를 3계층 신경망이라고 합니다.

     

    이 때 모든 경우의 수(Fully - connected 라고 합니다.)로 학습을 시켜야하는데, 예를 들어서 입력노드가 12개가 있고 은닉 노드가 100개가 있다면

    입력노드[1] -> 은닉노드[1],

    입력노드[1] -> 은닉노드[2],

    입력노드[1] -> 은닉노드[3],

    ...

    입력노드[2] -> 은닉노드[1],

    입력노드[2] -> 은닉노드[2],

    ...

    입력노드[12] -> 은닉노드[100]

    까지 데이터를 이동시킵니다.

    단순히 값만 옮겨 담으면 되냐고요? 네! 대신, '활성화 함수'라고 불리는 특정한 함수에 값을 넣은 다음에 나온 반환값을 -1~1범위에서 랜덤으로 설정된 "가중치"와 곱해서 전달해야합니다. 활성화 함수는 시그모이드 형태나 쌍곡탄젠트 등을 많이 사용합니다. 오른쪽 증가함수이며 부드럽게 개형이 이어지는 함수이죠.

     

    즉.. y = 1 / (1 + e^-x)라는 함수에 x(입력노드에서 들어온 값)가 0.5라는 값으로 들어왔다고 합시다...

    그럼 y는 대략 0.7정도의 값이 나오게 됩니다. 여기에 랜덤 가중치를 곱하여 은닉노드로 전해줍니다... 이 과정을 은닉노드 - 출력노드로 데이터를 이동시킬때도 시행해줍니다.

     

    그리고 출력노드에 데이터가 나왔을때, 이를 '정답'과 비교하여 오차(제곱오차를 사용합니다. 즉, (실제값 - 나온값)^2)를 계산하여 지나온 길로(즉, 출력 - 은닉 - 입력순으로) '오차의 역전파'라는 과정을 하게 됩니다. 이 오차값으로 각 가중치를 '업데이트'하게 되는데, 따라서 더욱 정답에 근접한 가중치를 얻을 수 있습니다.

     

    한마디로, 가중치를 조정하여 "어떤 데이터에 대한 보통의 정답"을 얻어내는 과정이 머신러닝이자 인공신경망 구조입니다. 각 가중치는 각 노드를 이동하는 데 곱해주는 상수일 뿐이지만, 이로 인해서 데이터 분류가 가능한 것이지요.

     

     

    이해가 안된다고요? '타리크 라시드'가 지은 '신경망 첫걸음'이라는 서적이 큰 도움이 됩니다.

    방법은 이해했으나 '이렇게해서 도대체 왜 학습이 되는지' 모르겠다고요? 그건 정상입니다.

    인공지능에 대한 인간의 연구는 중세시대 연금술과 차이가 없습니다. 순전히 경험적인, "어? 이렇게 하니까 되네?"하면서 발전해온 학문입니다. 최근에서야 이론 연구가 활발하게 되고 있지요. 그래서, "인공지능의 근본적이고 궁극적인 원리"는 전 세계에 몇 모를겁니다. 어쩌면 아무도요. 그건 정상입니다.

     

     

    앗! 원리를 물어본게 아니라 아무튼 쓰고싶다고요?

    그럼 그냥 라이브러리 널린걸 쓰시면 됩니다. 탠서플로, 티처블머신, 욜로, 등등.... 전 안써봤으나 오토핫키로 욜로정도는 쓰시더라고요. 뭔진 저도 모릅니다...

  • 프날님께
    asdf글쓴이
    2020.10.14 16:58 댓글

    구현은 어림도 없을거 같네요!

     

    탠서플로우를 오토핫키랑 어떻게 합치는지 궁금합니다

  • asdf님께
    2020.10.15 00:05 댓글

    오토핫키로 바로 임포트하는 API는 없는 것 같고요, 텐서플로는 오토핫키로 이식한걸 본적이 없네요 제가 안써봐서 뭘 말씀드릴수가.... yolo를 쓰시는 분은 보았는데 yolo 쪽으로 알아보셔요.

댓글 달기

서버에 요청 중입니다. 잠시만 기다려 주십시오...