이삼일 더 파니까 패턴이 보임. 뉴비들을 위해 간단 요약해줌.
1. 최상위 고급레벨 알고리듬 인터페이스
train과 predict 요렇게 두가지가 있다.
얘들은 응센세 강의에선 리니어리그레션, 로지스틱리그레션, 뉴우럴 네트워크, SVM 등등의 내부구현을 품고 있어서, 대략 5가지 셋트라고 생각해도 됨
2. train 내부구현 인터페이스
ML의 핵심은 train의 구현이다. 위에 다섯가지 셋트.
얘들은 모두 모델(혹은 파라미터라 부름)을 찾아내기 위해 최적값 구하는, 보통 하드코어 수학이론이 들어가는 알고리듬계 최고봉에 속하는, 최소값을 찾으러 \"하강\" 하는 알고리듬을 사용한다.
뉴럴네트워크나 svm처럼 train 자체 구현이 복잡한것도 하강 알고리듬에 비하면 간단한거임. 물론 얘들도 하강 알고리듬을 호출해야 됨.
하강 알고리듬은 존나 빠르게 전역 최소값으로 하강하면 좋은거임
3. 라이브러리 사용
급하강 함수가 지원되는 라이브러리를 가져다 써야지, 직접 개발하는건 현실적으로 불가능하다고 보면 됨.
근데 라이브러리를 구하다보면 하강함수는 train 함수가 지원되는 라이브러리에 포함되는 것이 보통임.
일단 내가 잠깐 손대본건 liblinear multicore 이거랑 libsvm. 조낸 응센세 강의 때 개발한거랑 인터페이스가 달라서 30분 정도 삽질함.
얘네 둘은 matlab, octave, java, c, c++ 지원임. 난 이미 응센세 ML 하면서 옥타브용 정답 코드가 다 있기 때문에 옥타브에서 두 라이브러리를 써보고 내꺼랑 비교해봄.
와 멀티코어 버젼이라 순식간에 cpu 점유율이 400 가까이 올라감. 답은 한 20초 걸리던게 3초 걸리네 ㅎㄷㄷ
4. 딥러닝
뭐 응센세는 이건 커버 안했지만, 내가 만든 뉴럴네트워크는 다수의 히든 레이어를 지원해서 심심풀이로 비교해봄.
응센세 문제 데이터 특성이 그런건진 몰라도 딥러닝으로 안치는 히든 레이어 한장 짜리랑 딥러닝으로 치는 두장 짜리랑 비교해봄.
결과는 근소한 차이로 한장짜리 승! 응센세가 보통 리니어리그레션, svm+리니어커널, svm+논리니어커널, 뉴럴네트워크 요런 순으로 자기는 젖절한 거를 찾는 다는데, 아마 대부분 첫번째에서 답나오는 듯
5. 기타
니가 ML 시스템을 구축하려면 train이랑 predict는 그냥 시작에 불과하고, 부수적으로 데이터 파이프라인, 검증, 기타 등등 잡일이 산더미같이 늘어남
6. 클라우드
와 찾아보니까 메이저급 클라우드 업체들은 벌써 ML 다 지원하더라구. 마소도 하고 ㅎㄷㄷ
ML도 특이점이 오긴 왔어
1. 최상위 고급레벨 알고리듬 인터페이스
train과 predict 요렇게 두가지가 있다.
얘들은 응센세 강의에선 리니어리그레션, 로지스틱리그레션, 뉴우럴 네트워크, SVM 등등의 내부구현을 품고 있어서, 대략 5가지 셋트라고 생각해도 됨
2. train 내부구현 인터페이스
ML의 핵심은 train의 구현이다. 위에 다섯가지 셋트.
얘들은 모두 모델(혹은 파라미터라 부름)을 찾아내기 위해 최적값 구하는, 보통 하드코어 수학이론이 들어가는 알고리듬계 최고봉에 속하는, 최소값을 찾으러 \"하강\" 하는 알고리듬을 사용한다.
뉴럴네트워크나 svm처럼 train 자체 구현이 복잡한것도 하강 알고리듬에 비하면 간단한거임. 물론 얘들도 하강 알고리듬을 호출해야 됨.
하강 알고리듬은 존나 빠르게 전역 최소값으로 하강하면 좋은거임
3. 라이브러리 사용
급하강 함수가 지원되는 라이브러리를 가져다 써야지, 직접 개발하는건 현실적으로 불가능하다고 보면 됨.
근데 라이브러리를 구하다보면 하강함수는 train 함수가 지원되는 라이브러리에 포함되는 것이 보통임.
일단 내가 잠깐 손대본건 liblinear multicore 이거랑 libsvm. 조낸 응센세 강의 때 개발한거랑 인터페이스가 달라서 30분 정도 삽질함.
얘네 둘은 matlab, octave, java, c, c++ 지원임. 난 이미 응센세 ML 하면서 옥타브용 정답 코드가 다 있기 때문에 옥타브에서 두 라이브러리를 써보고 내꺼랑 비교해봄.
와 멀티코어 버젼이라 순식간에 cpu 점유율이 400 가까이 올라감. 답은 한 20초 걸리던게 3초 걸리네 ㅎㄷㄷ
4. 딥러닝
뭐 응센세는 이건 커버 안했지만, 내가 만든 뉴럴네트워크는 다수의 히든 레이어를 지원해서 심심풀이로 비교해봄.
응센세 문제 데이터 특성이 그런건진 몰라도 딥러닝으로 안치는 히든 레이어 한장 짜리랑 딥러닝으로 치는 두장 짜리랑 비교해봄.
결과는 근소한 차이로 한장짜리 승! 응센세가 보통 리니어리그레션, svm+리니어커널, svm+논리니어커널, 뉴럴네트워크 요런 순으로 자기는 젖절한 거를 찾는 다는데, 아마 대부분 첫번째에서 답나오는 듯
5. 기타
니가 ML 시스템을 구축하려면 train이랑 predict는 그냥 시작에 불과하고, 부수적으로 데이터 파이프라인, 검증, 기타 등등 잡일이 산더미같이 늘어남
6. 클라우드
와 찾아보니까 메이저급 클라우드 업체들은 벌써 ML 다 지원하더라구. 마소도 하고 ㅎㄷㄷ
ML도 특이점이 오긴 왔어
얌마 데이터 갯수 옆구리 터지는 소리 안나게 해라. 그건 bias와 variance로 결정해야 되고, 온라인 러닝의 경우는 바로바로 업뎃하면 되기 때문에 그런거 무관. 더 중요한게 데이터 전처리여 완전 개노가다 ㅇㅇ
물론 나는 데이터 전처리가 필요한 분야는 최대한 피하려 함 ㅋㅋ
양임 - DCW
어휴 얼서 줃어만 들어서 ㅋㅋㅋ 얌마 양보다 어떤 feature의 데이터냐가 더 중요한거여. 니가 bias 낮고 variance 높고 precision이랑 recall 높은 수준의 데이터 량을 빨리 충족해주는 feature가 있으면 데이터량이 늘어봤자 적중률 향상은 미미하게 된다. 이건 내 말이 아니라 응센세 말임 ㅇㅇ
얌마들아 니들이 응센서 강의 해봤으면 숫자인식 데이터 5000개 가지고 98% 정도까지 적중률 올리는거 봤을텐데... 물론 니들은 거기까지 진도 빼지도 못하겠지만 ㅋㅋ
셋트->세트 (외래어는 뒤 초성이 거센소리나 된소리일 때 앞 받침을 안 적는 게 원칙. 쉽게 말하자면 받침 유무에 따라 발음 차이가 없으면 받침 안 씀) [리듬 맞춤법 봇♬]
야이미친//갯수->개수 (개수 (個數)[명사] : 한 개씩 낱으로 셀 수 있는 물건의 수효.) [리듬 맞춤법 봇♬]
ML 알고리듬의 좋다 나쁘다는 이제 뭐가 빠르냐의 문제일 뿐 훈련결과는 다 비슷. 제일 중요한건 니가 ML에 넘기는 X값이 얼마나 전체값을 다양하게 커버할 수 있느냐 하는거지. 적은 량으로도 다양성을 확보할수 있으면 데이터 양은 문제되지 않는다. 데이터가 한쪽으로 기울어 있으면 양이 아무리 많아도 소용없지 ㅇㅇ
얌마 니가 데이터를 어떤식으로 수집했냐에 따라 다른거지 무슨 ㅅㅂ 데이터를 양이 많으면 오버피팅을 피할수 있다는 응센세 강의 5주차에서 때려치는 개소리를 ㅋㅋㅋ 얌마 일단 구글 등등이 선두인건 개노가다 필요한 부분까지 일찍부터 손대고 개선해서 양질의 데이터를 확보해서 그런거지 데이터 양 아무리 많아봐라 니가 그거 다 배치로 트레이닝 시킬레? ㅋㅋㅋ
그리고 데이터가 부족하면 트레이닝 데이터 만들어도 된다. 물론 잘 만들어야 됨. 이것도 내 얘기가 아니라 응센세 얘기 ㅎㅎ
얌마 근데 오해는 하지마라. 데이터의 양이 적어도 상관없다는 말은 아니여. 모델이 복잡한 모델이면 그걸 만들려면 많은 데이터가 필요하겠지. 그러나 너나 내가 마주치는 대부분의 일들은 모델이 단순하다고 본다. 특정 유저에 어떤 스팸을 보낼까 결정하는 모델과 자율주행 차에 쓰는 모델은 다르다는 얘기여 ㅇㅇ