지난번 글에서 데이터 과학 강의를 소개했는데, 이번에는 이어서 기계학습 강의에 대해서 소개를 하겠습니다. Udemy에서 역시 같은 강사가 올린 강의입니다. 제목은 "Machine Learning A-Z: AI, Phython & R + ChatGPZ Prize [2025]"입니다.

강의 주소(https://www.udemy.com/course/machinelearning/learn/lecture/20015232?start=195#overview)
이 강의에서는 각종 기계학습 방법에 대해서 배울 수 있습니다. 기계학습이란, 어떤 데이터가 입력이 되었을 때, 데이터가 무엇을 의미하는지를 판정해주는 방법 혹은 모델이라고 할 수 있습니다. 기계학습의 대표적인 기법 중의 하나기 딥러닝입니다만, 딥러닝 이외에도 다양한 기법이 있습니다.
본 강의에서는 그러한 각 기법들의 개념을 먼저 설명하여, 수강자들이 먼저 개념을 이해하도록 돕고, 그런후 python을 이용하여 실습할 수 있도록 하고 있습니다. 따라서 강의에서 설명하는대로 코드를 직접 작성하여 실행해 볼 수 있습니다.
그럼 강의 설명을 요약해 올려보겠습니다.
----------------------------------------------------
이 강의는 머신러닝 분야에 관심이 있는 사람들을 위한 과정입니다. 데이터 과학자와 머신러닝 전문가가 설계한 이 강의는 복잡한 이론, 알고리즘, 코드 라이브러리를 간단하게 배우고 이해할 수 있도록 돕습니다. 전 세계 100만 명 이상의 학생들이 이 강의를 신뢰하고 있으며, 단계별로 머신러닝의 세계로 안내합니다. 각 튜토리얼을 통해 새로운 기술을 배우고 이 도전적이면서도 보람 있는 데이터 과학 분야를 깊이 이해하게 됩니다.
이 강의는 파이썬 또는 R 튜토리얼 중 하나를 선택하여 학습할 수 있으며, 둘 다 공부할 수도 있습니다. 여러분의 경력에 맞는 프로그래밍 언어를 선택하면 됩니다. 강의는 재미있고 흥미롭지만 동시에 머신러닝에 대해 깊이 탐구합니다. 강의는 다음과 같은 구조로 진행됩니다.
- 데이터 전처리
- 회귀 분석: 단순 선형 회귀, 다중 선형 회귀, 다항 회귀, 서포트 벡터 회귀, 결정 트리 회귀, 랜덤 포레스트 회귀
- 분류 분석: 로지스틱 회귀, K-NN, 서포트 벡터 머신(SVM), 커널 SVM, 나이브 베이즈, 결정 트리 분류, 랜덤 포레스트 분류
- 클러스터링: K-평균, 계층적 클러스터링
- 연관 규칙 학습: Apriori, Eclat
- 강화 학습: 상한 신뢰 구간, 톰프슨 샘플링
- 자연어 처리: Bag-of-words 모델과 NLP 알고리즘
- 딥러닝: 인공 신경망, 합성곱 신경망(CNN)
- 차원 축소: PCA, LDA, 커널 PCA
- 모델 선택 및 부스팅: k-겹 교차 검증, 파라미터 튜닝, 그리드 서치, XGBoost
각 파트 내의 섹션은 독립적으로 진행되므로, 전체 강의를 처음부터 끝까지 들을 수도 있고, 현재 자신에게 필요한 섹션만 선택하여 배울 수도 있습니다. 또한, 이 강의는 실제 사례를 바탕으로 한 실습을 포함하고 있어 이론뿐만 아니라 실제 모델을 구축하며 실습할 수 있습니다.
강의는 파이썬과 R 코드 템플릿도 제공하여, 학습한 내용을 실제 프로젝트에 적용할 수 있도록 돕습니다. 학습 후에는 머신러닝 모델을 선택하고, 예측을 정확하게 하며, 강력한 분석을 수행할 수 있게 됩니다. 또한, 강의는 강화 학습, 자연어 처리, 딥러닝, 차원 축소와 같은 고급 기술도 다룹니다. 머신러닝을 통해 비즈니스에 가치를 더하고, 데이터 과학 분야에서 경력을 쌓을 수 있는 능력을 키울 수 있습니다.
이 강의는 고등학교 수학 수준의 기초 지식만 있으면 누구나 수강할 수 있습니다. 머신러닝에 관심이 있는 사람, 기초 알고리즘을 아는 중급 수준의 사람, 코딩에 익숙하지 않지만 머신러닝을 배우고 싶어 하는 사람 등 누구나 수강 가능합니다. 데이터 과학에서 경력을 시작하고자 하는 대학생, 데이터 분석가 등에게도 적합한 강의입니다.
---------------------------------------------------------------------------------------------------------------------------------
기계학습에는 다양한 학습기법이 존재합니다만, 그중 단연 성능이 좋은 기법은 딥러닝(Deep Learning)입니다. 이 방법은 사람의 뉴런을 모방해서 만든 방법입니다. 가장 중요한 기법이고 내용도 별로 어렵지 않아 여기서 간단히 설명해 보겠습니다.
아래는 인공 신경망을 그린 그림입니다.

오른쪽에는 단위 신경(셀: Cell)을 그린 그림이고, 왼쪽은 그런 셀(밝은 회색 셀들)이 여러개가 배치되어 입력과 출력을 하는 그림입니다.
먼저 왼쪽 그림을 설명해 보겠습니다.
위의 신경망은 어떤 이메일이 스팸인지 아닌지를 판정하는 모델이라고 해 보겠습니다. 여기서 x1부터 xn은 총 n개의 입력(어두운 회색 셀들)을 의미합니다. 여기서 x는 어떤 종류의 정보라도 됩니다. 예들 들어서 그럼 입력, x1 부터 xn은 메일안에 들어있는 특정 단어의 빈도 수라고 해 볼수 있겠습니다. 그리고 출력은 2개, 측 스팸메일(yes)인지 아닌지(no)가 됩니다. 그래서 그림의 맨 오른쪽에 출력(하얀색 셀)이 2개('그렇다'셀과 '아니다'셀)가 있습니다.
입력과 출력의 중간에 2줄로 배치된 셀들(밝은 회색 셀)이 판단하는 층(Layer)입니다. 입력과 출력의 사이에 있으므로 숨겨진 층(Hidden Layer)라고 부릅니다. 숨겨진 층은 그림처럼 2줄일수도, 1줄일수도, 그리고 여러 줄일수도 있습니다. 딥러닝이라는 이름은 숨겨진 층때문에 붙은 이름입니다. 말그대로 깊이(Deep) 숨겨져있기 때문입니다.
만일 어떤 메일이 스팸메일이라면, 수신인에게 어떤 것을 권하는 내용이 들어 있을 수 밖에 없고, 그렇다면 관현하여 특정 단어(예를 들어서 특정 상품의 이름 등)가 많이 등장하게 됩니다.
우측 그림을 설명하면, 셀이 하는 역할은 단순하게 더하기 입니다. 그림에서 빨간색 상자로 표신된 셀을 예로 들어 설명해 보겠습니다. 이 셀은 위에서부터 j번째 셀입니다. 이 셀은 x1로 부터 xn까지의 모든 입력을 취합합니다. 이때 단순히 모득 값을 더하는 것이 아니라 각 값에 가중치(weight factor)를 곱한 후 합쳐줍니다. 그러니까 x1의 값에 가중치w1j를 곱하고, x2에 w2j를 곱하고, x3에 w3j를 곱하고, ..., xn에 wnj를 곱한 후, 이 값들을 모두 더합니다. 셀 내부에 있는 시그마 기호가 이것을 표시합니다.
그러나 j번째 셀만 합산을 하는 것이 아니라, 숨겨진 층에 있는 모든 셀들이 동시에 합산을 합니다. 또한 숨겨진 층의 두번째 줄의 셀들은 x가 아니라 첫번째 줄의 셀들의 합산값을 입력으로 받습니다.
그럼 각 셀이 합산한 값은 어떻게 출력으로 결정될까요? 이것은 바로 전달함수(activation function)에 의해서 결정됩니다. 셀안에 f가 그것을 의미합니다. 전달함수에는 여러 종류가 있지만 대표적으로 많이 사용되는 것은 ReLu함수 입니다. 아래는 ReLu함수의 모양입니다.

위 그래프의 의미는, 합산 결과가 0이하의 음수이면 0을 출력하고, 그 외의 경우에는 합산값의 결과에 비례하게 커지는 어떤 값을 출력한다 입니다. 그러니까, 합산의 결과가 클 수록 다음 단, 첫번째 숨겨진층은 두번째 숨겨진 층으로, 그리고 두번째 숨겨진 층은 출력으로 크게 전달합니다.
그래서 최종적으로 출력에서는 메일이 스팸에 가까울 수록 '그렇다'에 가까운 결과가 나옵니다. 만약 출력을 0에서 1사이의 실수로 표시할 경우, 1에 가까운 결과가 나오고, '아니다'에 가까울 경우, 0에 가까운 결과가 나옵니다.
그렇다면 각 가중치는 어떻게 결정될까요? 바로 이 가중치를 결정하는 과정이 '학습'입니다. 위 신경망에서 출력값은 셀의 가중치 합산으로 결정된다고 말씀드렸습니다. 이 출력값은 입력 데이터(메일 내의 각 종 단어들의 빈도(x값들) + 학습 데이터(스팸이다 혹은 아니다)) 중 학습 데이터(스팸 여부)과 비교합니다. 이 때, 학습 데이터는 학습 전에 미리 사람이 판단하여 신경망에게 알려줍니다. 따라서 각 메일마다 사람이 일일이 스팸인지 아닌지 여부를 정해 놓아야 하며, 메일의 개수(즉 입력 데이터)가 많을 수록 신경망의 판정 능력이 좋아집니다.
위의 비교하고 학습하는 방법은 경사하강법이라는 방법입니다. 출력값을 학습데이터값과 비교하여 차이가 클 경우(측 신경망이 판단한 결과와 실제 스펨여부가 차이가 클 경우) 각 가중치를 수정합니다. 아래에 경사하강법을 설명하는 그림이 있습니다.


위 그림에서 가로축은 어느 하나의 가중치 wij의 값이며, 세로축은 출력값과 학습데이터값 사이의 차이라고 할 수 있습니다. 즉 세로축의 값이 클 수록 판정 결과가 잘못되었다는 의미입니다. 거꾸로 판정이 정확하다는 것은 그래프에서 아래로 향해야 한다는 의미입니다. 그래서 처음 빨간 점에서 시작해서, wij의 값을 조금씩 감소시켜서 그래프의 가장 바닥에 도달할때까지 wij의 수정을 반복합니다. 경사하강법은 여기서 유래합니다. 그래프의 기울기가 큰 부분에서 기울기가 0이 될때까지 wij를 수정합니다.
물론 wij 하나의 값에 대해서만 경사하강을 하는 것이 아니며 다른 가중치에 대해서도 동시에 경사하강법을 실시합니다. 그 아래의 그림은 두개의 가중치에 대해서 그린 것이며 검은색 선은 경사하강법에 의해서 결정되는 경로를 의미합니다. 가중치의 개수는 위의 신경망 그림에서 총 2*j 개수만큼 있으니, 실제로 경사하강법을 실시하는 차원은 총 2*j개의 차원입니다. 우리는 3차원에서 살고 있으니 위 그림처럼 가중치를 최대 2개까지 밖에 그릴 수 없습니다만, 계산 상으로는 얼마든지 높은 차원에서 경사하강법을 실시할 수 있습니다.
위처럼 경사하강법에 의해서 세로축의 값이 최소가 되는 가중치값들이 결정되면 비로소 학습이 끝난 것입니다. 이때부터 입력이 들어오면 신경망은 스팸여부를 판단할 수 있습니다.
'GreenTam의 생각' 카테고리의 다른 글
기계학습, 인공지능 강의 3 : 인공지능, 딥러닝 강의 (3) | 2025.04.12 |
---|---|
기계학습, 인공지능 강의 1 : 데이터 과학 강의 (0) | 2025.03.31 |
직장인으로서의 단상 2 (1) | 2025.03.28 |
클라우드 컴퓨팅: Docker(도커) (0) | 2025.03.15 |
[공지] AWS 컨퍼런스 (0) | 2025.03.15 |