본 글은 학교 '머신러닝' 수업을 들으며 공부한 내용을, 저의 말로 바꿔서 남에게 설명해주듯이 쓰는 글입니다.
다시 한번 복습하는 과정에서 Coursera Andrew Ng 교수님의 강의를 일부 수강하였고, 인터넷 검색 등을 통해 내용을 보충하였습니다.
너무 쉬운 개념들은 따로 정리하지 않았습니다. 따라서 해당 글에는 적히지 않은 개념들이 일부 있을 수 있습니다.
본 글은 Andrew Ng 교수님의 'machine learning' 수업 강의 노트를 일부 사용하였습니다.
본 글에 사용된 강의노트 사진들 대부분의 저작권은 'DeepLearning.AI'에 귀속되어 있음을 밝히며,
본 글은 'DeepLearning.AI'의 'Copyright rights'에 따라 수익 창출을 하지 않고,
또한 해당 정책에 따라 '개인 공부 및 정보 전달'이라는 교육적 목적으로 글을 작성함을 밝힙니다.
지도 학습(supervised learning)
지도학습은 회귀와 분류로 나뉘는데, 하나씩 살펴보자.
회귀(regression)
위는 집값 예측 회귀 그래프.
y값 : targets
y햇(y-hat) : prediction(예측값)
우리는 저 data들이 어떤 경향성을 보이는지, 미래엔 어떻게 되는 지 예측하고 싶음.
저건 되게 data들의 경향성이 쉽게 보여서 그냥 2차 E로도 표현할 수 있을거임.
** 앞으로 내가 'E'라고 쓰는 건 '방정식'을 의미하는데, 대충 '함수'여도 난 편의상 방정식으로 대체해서 부를 때가 많다. 사실 엄밀히 말하면 함수도 방정식이라고 생각함.
그렇게 2차E로 가정하면, 그 E를 내가 완벽히 구하려면 data는 최소 3개 이상 있어야 함.
왜냐?? 미지수가 ax^2 + bx + c 하면 3개니까, Equation도 3개 있어야 하는 게 자명!!
물론 data는 많아야 좋음 왜냐? error을 줄이기 위해서!!
흠... 그래서 error가 뭔디??
임의의 x값을 잡았을 때, 실제 관측값(y값)과 예측값(y햇값)의 차이가 error!
(사실 강의에서 y-hat을 쓰진 않았는데, 확률 및 통계 수업에서 배웠던걸 좀 써봤다.)
저 error을 최소화 하는게 핵심이고, 우리의 목적이고, 회귀의 목적임.
이 때, 어떤 꼴의 E를 쓸 지는 우리가 정해야 함.
예를 들어, 저건 딱 보니까 data가 2차 E 모양으로 보이지 않음? 그러니까 그냥 2차E를 쓴 거고 간단하게 풀린 건데,
저게 뭔가 지수함수 모양을 보이면 우린 E으로 지수함수를 골라야 할 거고,
여기서 어떤 함수를 쓸 지는, 나중에 ml engineer의 역량이 된다고 함. 이게 흔히 말하는 '어떤 모델을 쓸까에 관한 문제' 그런 거인듯. 감이 중요하다고 하는 게 이거같음.
Underfitting vs Overheading
저런 쉬운 문제를 푼다고 할 때, '차수'를 어떻게 할 거냐도 고려해 봐야함.
만약 1차E로 하면, 미지수가 2개밖에 없음!! (ax + b꼴) -> underfitting 발생. (data에 비해 model이 너무 단순함)
만약 2차 E로 하면, 미지수는 조금 늘고 error가 좀 더 줄어들었음.
...
그렇게 해서, 차수를 계속 계속 늘린다면? 막 엄청 복잡한 E를 사용해서 y-hat을 표현했다면??
-> error은 줄어들 거임. 그러나, 저런 쉬운 문제들을 풀 때는 overheading 발생!!
따로 언급하진 않았지만 supervised learning은 왜곡된 data가 없다는 가정 下, 즉 "right answers"가 주어졌단 가정 下에 이루어져야 함. 나중에 가면 실전에서는 data를 못 믿어서 잘 거르는 기법들을 쓰기도 함 ㅎㅎ
분류(classification)
종양 크기에 따라, 그게 악성 종양인지 아닌지 판별하는 classification problem이다.
보면 대체적으로는 tumor size에 따라 1과 0이 어느정도 경향성을 보인다.
그러나, 현실은 녹록치 않은 법. 저기 가운데쯤에 0과 1이 섞인 부분이 문제다. 저기서 error가 발생할 확률이 높음.
내가 의사면 tumor size만 보고 저게 암인지 아닌지 어느정도 예측하는 게 내 바람인데, 이건 뭐 써먹을 수가 없다!!!!
=> observation을 늘리면, 즉 dimension을 늘리면 해결됨.
age를 추가해 dimension을 늘리니, 쉽게 2차E 정도로 둘을 나눌 수 있었다.
regression과 classification은 절대적인 게 아니다!!
housing price problem은 classification으로 바꾸면, "내가 살 수 있냐 없냐"로 치환 가능.
x를 'price'로 두면, 0은 "cant buy", 1은 "can buy"로 대입해서 해결 가능함.
=> 특정 기법에 매몰되지 말자!!
컴퓨터 비전(CV)의 사례. - 매몰되지 말아야 한다!!
얼굴 사진을 보고 머신 러닝을 돌린다고 해보자. 우리는 2가지 선택지가 있음.
사진에 이게 '얼굴인지 아닌지' -> classification
'얼굴 위치 좌표 인식' -> regression
근데, 저 '얼굴 위치 좌표 인식'을 꼭 regression으로 풀어야 할까??
저걸 classification으로 푼 사람이 (검열)스타트업에서 굉장히 잘나가는 중.
ex. (30, 30) 좌표에 뭐가 있으면, 이걸 classification으로 가능한가?
=> 가능하다!! 바둑판처럼 좌표를 다 깔고, 한 칸 한 칸이 얼굴이 있는지 없는지 0 or 1로 check 하면 됨.
결론) regression : continuous, classification : discrete가 일반적으론 맞다. 그리고 우리도 그렇게 생각해야 함 기본적으론.
그러나, 융합적 사고를 가지면 남들이 깨닫지 못한 새로운 걸 발견할 수도 있다.
(나도 새로운 걸 발견하고 싶다.^ㅎ^)
비지도 학습(unsupervised learning)
supervised learning은 뭐가 뭔지 "lable", 즉 "정답(right answers)"가 붙어 있었음.
그래서 우리는 lable을 보고 이건 이거 저건 저거 분류 또는 회귀를 해볼 수 있었던 거임.
근데, 이젠 lable이 없엉... 엉엉...
클러스터링(Clustering)
우리가 학교에 처음 반배정 되면 얼추 성격 맞는 애들끼리 끼리끼리 모이는 거 생각해 보자.
따로 "얘는 활발, 얘는 조용, 얘는 축구좋아함" 같은 걸 선생님들이 말해주고 다니지 않아도,
자연스레 활발한 애들끼리 모이고, 축구 좋아하는 애들끼리 모여서 무리를 형성하지 않는가??
이와 같이 lable이 없어도 자연스레 비슷한 성격의 data들끼리 무리를 지어서 규칙성이 보이는 걸 clustering이라고 함.
또 다른 예시로, Cocktail Party Problem이라는 것도 유명함.
마이크 2개의 거리를 조금 띄어 놓고, 사람 두 명의 거리도 조금 띄어 놓는다. 그리고 사람과 마이크도 적당한 거리를 유지한다. 그리고 두 사람이 각자 자신이 준비한 이야기를 한다.
이 때, 우리는 두 마이크의 소리를 분석해서 "음성의 목소리의 주인공"을 누가 누군지 구별할 수 있을까?
정답은 "가능하다" 이다.
왜냐? 1번 마이크에 가까운 사람은 그 마이크에 소리가 더 크게 녹음되고, 그렇지 않은 사람은 더 작은 소리가 녹음될 것이기 때문이다.
따라서 각 마이크에 대한 각 사람의 거리 비를 계산해, 마이크 내 음성들의 소리 크기와 비교하면 된다.
즉, 따로 "이 목소리가 1번 사람 목소리야"하고 lable을 달아주지 않아도, 각 마이크에 담긴 소리 크기에 따라 1번 사람과 2번 사람으로 clustering이 되어 sound source seperate가 가능한 것이다.
unsupervised learning이 잘 쓰인 사례로, '압축'이 있다고 한다. 어떤 원리로 사용된 건지는 잘 모르겠지만, 그렇다고 함. 아마 쪼개진 압축 파일의 데이터를 모아 합치는 과정에 필요한 게 아닐까?
또한, 위의 cocktail party problem의 발전형인데, 미국이 이라크전에서 저격수들을 잡으려고 특별한 마이크를 보급했다고 한다. 이는 상대 저격수가 총을 쐈을 때 소리의 방향, 크기를 분석해 어느 방향에서 어느 거리만큼 떨어진 곳에서 총을 쐈는지 분석해준다. (이름은 잘 기억안남) 이것도 clustering 기법을 사용했다고 볼 수 있을 것이다.
여담) 요즘은 알고리즘보단 data 싸움이다.
근데, data가 10만, 100만, ... 이 넘어가면, 그거 언제 다 가공하고 lable을 붙일 까?
supervised가 성능은 더 좋기야 하겠지.
snow에서도 쓰는 기술중에, face landmark detection (얼굴 바꿔주는거) 기술이 있는데,
문제가 '코 중앙' 에 '코 중앙' 이라는 lable을 찍어야 하는데, 누구는 사람 코 중앙에 정확히 찍는 반면, 누구는 코 조금 아래쪽 뾰족한부분에 찍고, 누구는 코 기둥에 찍기도 한다.
즉, 사람마다 데이터 전처리 작업이 다르고 속도도 상당히 느리다.
그러니 언젠간 unsupervised가 이기지 않을까>?
구글 street view 얼굴 모자이크도 자동 detection이고,
data 수는 기하급수적으로 많아질 건데, 그걸 인건비를 ai가 돈으로 벌어줄 수 있는진 모르겠다.
supervised는 인력도 돈도 필요하고... 참... 어렵다.
'AI > 머신러닝(코세라)' 카테고리의 다른 글
[ML] #6 신경망(Neural Networks) (0) | 2024.10.15 |
---|---|
[ML] #5 정규화(Regularization) (0) | 2024.10.15 |
[ML] #4 로지스틱 회귀(Logistic Regression) (0) | 2024.10.14 |
[ML] #3 다변수 선형 회귀(Linear Regression with Multiple Variable) (0) | 2024.09.20 |
[ML] #2 일변수 선형 회귀(Linear Regression with One Variable) (0) | 2024.09.19 |