본문 바로가기

머신러닝/[논문으로 짚어보는 딥러닝의 맥]

기계 학습 용어 정리

핵심 키워드

  • Machine Learning(기계학습)
  • Terminology(용어)
  • ML 용어 정리

학습하기

 이번에는 가장 기본적인 용어에 대한 설명을 하고자합니다. 인풋, 아웃풋, 뉴럴넷 등이 그 대상입니다. 항상 용어는 굉장히 중요합니다. 그래서 저희는 아주 간단한 것이지만, 용어를 알아보고자 합니다.

 뉴럴넷이라는 건 제 생각에, 단순히 뉴럴이 연결된 것입니다. 입력이 있으면, 출력이 있죠. 뉴럴넷이라는 게 흘러가는 모델이라 본다면, 그 모델의 흘러가는 부분에 들어가는 모든 것이 인풋 데이터입니다. 이미지, 동영상, 글자, 숫자 모든 것이 인풋이 될 수 있습니다만, 모든건 근본적으로 수로 입력이 될 것입니다. 쨋든, 인풋 데이터는 단순 입력입니다.

 세상에는 무한한 물체가 있기 때문에, 우리가 문제를 분류문제를 풀 때에는 풀고자 하는 물체의 경우의 수를 항상 나눠야합니다. 만약 4개의 물체만 나누겠다. 라는 것은 4개의 클래스로 분류하겠다 하는 것입니다. 이를 위해 출력물을 원핫인코딩을 통해 표현합니다. 원핫인코딩의 길이는 곳 분류하고 싶은 대상의 종류의 개수입니다.

 트레이닝이라는 건, 말 그대로 학습을 하는 것입니다. 그래서 여러가지 옵티마이저(SGD, Momentum, NA,...)를 통해서 뉴럴네트워크의 웨이트를 찾아나가는 과정이 트레이닝입니다. 인풋과 아웃풋이 주어졌다면, 이 데이터를 잘 모델링할 수있도록 웨이트를 잘 바꿔나가면서 찾아나가는 과정을 트레이닝이라합니다.

 데이터셋은 항상 인풋과 아웃풋 페어로 이루어져있습니다. 트레이닝 데이타, 밸리데이션 데이터, 테스트 데이터로 분류됩니다. 보통 학습에 사용되는게 트레이닝 데이터구요. 밸리데이션 , 테스트 데이터는 학습과정에서는 절대 들어가서는 안됩니다. 트레이닝 시키고 테스트 집어넣고 아 성능이 별로네, 다시 트레이닝 이거 안됩니다. 이를 위해서 밸리데이션 데이터를 사용해야합니다. 기본적으로 그래디언트를 계산하기 위한 과정에 사용되는게 트레인 데이터고, 뉴럴네트워크의 사이즈, 뎁스(Depth), 위스(Width), 배치사이즈, 러닝레이트를 얼마로 할지 이런 일련의 하이퍼파라미터를 잡을 때, 밸리데이션을 사용합니다. 만약 가진 데이터가 적다 100개 뿐이다. 트레이닝 80  밸리데이션 20을 사용한다면 학습하지못한 20개는 학습용으로 썻던게 아니니까, 굉장히 아깝겠죠. 그럴 때 CV를 사용합니다. 데이터를 5개로 나눈다 그럼 80%를 트레인으로 20%를 밸리데이션으로, 그걸 5번 시행하면 5-cv가 되는 겁니다. 이때최적의 세팅과 하이퍼파라미터셋을 찾고,고 전체데이터로 마지막 학습을 시행한다면 적은 데이터로 가장 좋은 효과를 이끌어 낼 수 있겠지요. 이게 CV의 목표입니다.

 일반적으로 풀리커넥트 레이어 = 덴스 레이어 = 멀티레이어 퍼셉트론입니다. 싱글뉴럴넷은 기본적으로 인풋 - 웨이트 - 바이어스 - 액티베이션 구조입니다. 제가 생각하는 뉴럴넷의 목적은, N 차원에서 N' 차원으로 가는 논리니어 매핑을 찾는 겁니다. 이를 위한 가장 직관적인 방법이 행렬곱을 이용하는 방법입니다. 이것을 웨이트-바이어스 레이어가 처리하고, 액티베이션의 역활은 매핑의 넌리니어 특성을 주기 위함입니다.

 뉴럴 네트워크는 위의 싱글레이어뉴럴렛이 여러 겹 있는 겁니다. 히든 레이어가 2개, 3개, 1000개 등 있는 거죠. 이런 과정에서 액티베이션이 필요해집니다. 기본적으로 웨이트-바이어스 레이어는 어파인 매핑이고, 어파인 매핑은 어떤 새로운 어파인 매핑으로 표현될 수 있습니다. 다시말해 만약 액티베이션이 없다면, 레이어를 1000개를 쌓아도 이는 근본적으로 1개의 레이어로 표현가능하다는 말입니다. 때문에 액티베이션으로 넌리니어 특성을 추가함으로써, 뉴럴넷이 표현할 수 있는 경우의 수를 늘리는 것입니다.

 앞서말했듯, 액티베이션은 넌리니어 특성을 주기 위함이기 때문에, 액티베이션 펑션은 정말 넌리니어한 어떤 함수나 될 수 있습니다. 그러나 보통 시그모이드(0~1의 값으로 아웃풋이 나오기에 확률로써 활용), 하이퍼탄젠트(-1~1의 값으로 아웃풋이 나오기에 해당 상황이 좋은지 나쁜지 판별할 때, 알파고의 밸류펑션으로 사용), 렐루(일반적인 분류 네트워크에서 좋은 성능), softplus(회귀에서 나름의 장점이 있음)

 에포크라는 것은 전체 데이터를 한 번 다 사용했을 때(사용해서 웨이트를 계산했을 때)의 단위입니다. 그러나 보통 많은 데이터를 한 번에 다 사용하고 모델을 업데이트 하는 것은 불가능하기 때문에, 우리는 미니 배치를 활용하게 되고, 배치사이즈는 한 번 그래디언트 업데이트를 시행할 때 사용한 데이터의 크기가 됩니다. 이터레이션은 에폭을 배치사이즈로 나눈 값이 됩니다. 예를 들어, 우리가 55000개의 트레이닝 데이터를 가지고 있고, 배치사이즈가 1000이라면 우리가 1에포크를 돌리기 위해서는 55번의 이터레이션이 필요합니다. 결국 이터레이션은 업데이트를 몇 번 했는가 와 같은 말입니다.

 코스트 펑션이라는건 우리가 줄이고자 하는 것입니다. 이 값이 적어지면, 우리가 원하는 결과가 나와야합니다. 우리가 원하는건 같더라도 코스트 펑션은 여러 개 일 수 있습니다. 예를 들어, 뉴럴넷의 결과가 정답과 같기를 원한다면, 단순히 뉴럴넷의 결과와 정답 사이의 거리를 코스트 펑션으로 선택할 수 있습니다. 이 때 거리를 제는 메트릭은 여러 종류가 있을 수 있는 겁니다. 이런 코스트 펑션의 메트릭을 무엇으로 선택하느냐에 따라 모델의 성능이 크게 차이나기도 하기 때문에, 항상 고민이 필요하며, 코스트 펑션은 항상 미분이 가능해야합니다. 미분이 안된다면, 역전파 학습이 안되고, 그럴 때는 강화학습을 사용할 수도 있습니다. 자연어 처리 분야에서는 강화학습을 자주 사용합니다.