[LeetCode] Machine Learning - Why?

이희진·2023년 3월 24일
0

Why Machine Learning

앞의 챕터에서는 머신러닝 알고리즘이 무엇인지 알아보고, 프로젝트에 ML을 적용하는 방법에 대해 알아보았다.
이제 이번 챕터에서는 왜 머신러닝 알고리즘이 필요한지에 대해 생각해보자.

우선 우리 삶의 여러 측면에서 머신러닝 알고리즘이 필요하다는 점은 인정할 필요가 있다.
우리가 매일 사용하는 인터넷 서비스(소셜 네트워킹과 검색 엔진) 등에 적용되어 있다.

페이스북에서의 기계 학습은 사용자 경험의 모든 측면에 대해 핵심 기능을 제공한다. 기계학습은 거의 모든 서비스에 널리 적용된다.

다음은 페이스북에서 머신러닝을 적용하는 방법에 대한 몇가지 예시다.

  • 뉴스피드의 스토리 순위는 머신러닝을 통해 정해진다.
  • 언제 누가 어디서 어떤 광고를 표시할지도 머신러닝을 통해 정해진다.
  • 다양한 검색 엔진 또한 머신러닝으로 구동된다.

그렇다면 왜 ML인가?

머신러닝 알고리즘이 존재하는 이유는, 머신러닝이 아닌 알고리즘이 할 수 없는 문제를 해날 수 있고, 다른 이점을 제공하기 때문이다.

머신러닝 알고리즘과 일반 알고리즘을 구별하는 가장 중요한 특성 중 하나는 머신러닝 알고리즘이 비즈니스 사례에 적응할 수 있도록 데이터에서 모델을 분리한다는 것이다. 예를 들어 분류 알고리즘을 적용하여 사진에 얼굴이 표시되는지 여부를 알 수 있다. 사용자가 광고를 클릭할지를 예측하는 데에도 적용할 수 있다. 얼굴 감지의 경우, 동일한 분류 알고리즘을 통해 사진에 얼굴이 있는지 여부를 알 수 있도록 모델을 학습시키고, 사진에 누가 있는지를 정확히 알려주는 다른 모델을 또 학습시킬 수 있다.

모델과 데이터의 분리를 통해 머신러닝 알고리즘은 보다 유연하고 일반적이며 자율적인 방식을 많은 문제를 해결할 수 있게 학습되고 있다. 따라서 특정 문제를 해결하기 위해서는 머신러닝 알고리즘에는 모델 내용이 되는 규칙을 명시적으로 코딩하지 않고 감독되거나 감독되지 않은 방식으로도 데이터에서 패턴을 학습할 수 있는 메타 알고리즘을 구성한다.

머신러닝이 필요한 이유

일단 다양한 종류의 머신러닝 알고리즘을 배우기 시작하고, 이미지 인식 및 번역 등의 어려운 작업을 처리하는 일에 머신러닝 알고리즘이 얼마나 잘 작동하는지 알게 된다면 모든 문제에 머신러닝을 적용할 수 있다. 하지만 이 섹션에서는 머신러닝의 몇가지 부정적인 점을 강조하여 다른 솔루션들처럼 머신러닝 또한 묘책이 아니라는 이야기를 하겠다.

인간과 마찬가지로 머신러닝 모델도 실수를 한다.

예를 들어, 페이스북에서도 사진에 얼굴 태그를 지정하지 못하는 경우가 있다.
불행히도 많은 사람들은 최신 기술인 머신러닝 알고리즘이 100퍼센트의 정확도를 가지고 있지 않다는 것을 받아들인듯 하다. 누군가는 머신러닝의 테스크가 이미지 인식과 같은 사람에게도 매우 어려운 일이기 때문에 그렇다고 머신러닝의 불완전성을 옹호할 수 있을 것이다. 그러나 반대로 생각하자면, 머신러닝은 거의 실수를 하지 않거나, 사람보다 훨씬 적은 실수를 할 것이라고 판단하기도 한다.
2012년 이전에는 이미지 인식 영역에서는 모델들이 75퍼센트의 정확도에 도전했다는 것을 명심해야 한다. 현재도 80퍼센트의 정확도를 가진 모델도 괜찮은 성능을 가진 것으로 간주된다. 따라서 알고리즘의 정확성이 중요한 시나리오에서는 머신러닝 알고리즘 채택을 신중히 검토해야 한다.

머신러닝이 저지른 실수를 사례별로 수정하는 것은 불가능하지는 않지만 어렵다.

머신러닝 모델이 저지르는 실수를 소프트웨어의 버그처럼 간주한다면 정확도를 높이기 위해 하나씩 수정하면 되지 않을까? 정답은 그렇지 않다. 그 이유는 두가지가 있다.
1) 일반적으로 머신러닝 모델을 명시적으로 조작하지 않고 주어진 데이터 내에서 머신러닝 알고리즘을 통해 모델을 생성하기 때문이다.
2) 나중에 생성된 머신러닝 모델을 조작할 수는 있지만, 다른 올바른 사례에 영향을 주지 않고 잘못된 사례에서만 머신러닝 모델의 출력을 변경하는 방법은 직관적으로 가능하지 않다.
예를 들어, 의사결정트리 모델의 경우, 출력은 루트에서 리프까지의 경로에 따라 생성되는 각 노드에서의 분기 조건의 결합체이다. 잘못된 경우의 결정을 바로 고치기 위해 노드의 특정 분기 조건을 변경한다면, 이 변경사항은 수정된 노드를 통과하는 모든 사례의 출력에도 영향을 미칠 것이다. 요약하자면 머신러닝 모델의 실수를 단순히 소프트웨어의 버그로 취급할 수 없으며, 사례 별로 모델을 개선하기보다는 모델 전체를 개선하기 위한 전체적인 접근 방식이 필요하다.

특정 머신러닝 모델에 대해 추론하는 것은 불가능하지는 않지만 어렵다.

지금까지는 머신러닝 모델이 실수를 하고, 사례 별로 바로잡는 것이 어렵다는 것을 배웠다.
적어도 결정 트리 모델과 같이 실수를 범하는 이유를 설명할 수 있다면 그나마 나은 상황이다.
일부 경우에, 특히 신경망이 있는 경우에는 머신러닝 모델에 대해 실제로 추론할 수 없기 때문이다.
예를 들어, ResNet이라는 새로운 신경망 모델이 있다. 이 모델은 이미지넷에서 96.43%의 정확성을 보여주며, 2560만개의 매개변수를 포함하여 50개의 뉴런 레이어로 구성된다. 모든 각 매개변수들은 모델의 최종 출력에 기여하기 때문에, 출력이 올바른지 아닌지를 설명하는 것은 모델 안에 이 수백만개의 매개변수가 결정짓는다. 그러므로 각 매개 변수에 개별적으로 논리를 적용하는 것은 어렵다. 따라서 모델에 대한 해석 가능성이 필요한 시나리오에서는 신경망 기반의 머신러닝 모델을 적용하는 것을 신중히 고려해야 한다.

결론은 이것이다. 머신러닝은 묘책이 아니며, 100% 정확하지 않고, 사례별로 모델을 수정할 수 없으며, 어떤 경우에는 모델에 대해 추론조차 할 수 없다.

**[추가자료]

ResNet

0개의 댓글