2024/01 16

경사하강법(Gradient Descent Algorithm)과 Optimizer 종류 정리 2️⃣

이전 포스팅에 이어 RMSProp과 Adam에 대해 계속해서 알아보겠다!📌 Gradient Descent Algorithm이란?📌 Batch gradient descent에 대해서--- momentum 이용1️⃣ Momentum2️⃣ Nesterov Momentum--- learning rate 이용3️⃣ AdaGrad(NEW!) 지수가중이동평균이란?4️⃣ RMSProp5️⃣ Adam  RMSProp를 알기 이전에 "지수가중이동평균"에 대해 알아야한다. 💡 지수가중이동평균이란? 이전의 값과 현재의 값에 다른 가중치 (두 가중치의 합은 1)를 주는 방식이다. 이 식에서 β가 Hyper parameter이고, 보통 0.9를 사용한다.β=0.9일때, 이전값(최근값들)인 Vt-1에..

ML 2024.01.28

경사하강법(Gradient Descent Algorithm)과 Optimizer 종류 정리 1️⃣

이번 포스팅에서는 경사하강법이 무엇인가에 대한 것과 Optimizer의 여러 종류들에 대해 알아보고자 한다.목차는 대충 아래와 같다.📌 Gradient Descent Algorithm이란?📌 Batch gradient descent에 대해서--- momentum 이용1️⃣ Momentum2️⃣ Nesterov Momentum--- learning rate 이용3️⃣ AdaGrad4️⃣ RMSProp5️⃣ Adam  📌 Gradient Descent Algorithm먼저 경사하강 알고리즘이란 함수의 변화도가 가장 큰 방향으로 이동하고자 하는 알고리즘으로,목적함수 J가 있을 때, 이 값을 최소화 하는 θ를 구하는 알고리즘이다.( 여기서 θ는 learnable parameter이고, α..

ML 2024.01.27

차원의 저주(Curse of Dimension)와 차원축소

이번 포스팅에서는 한번쯤은 들어봤을 법한 차원의 저주(Curse of Dimention)와 차원축소 방법들에 대해서 알아보겠다. 차원의 저주란? 간단히 말해 데이터의 차원이 증가할수록 모델의 성능이 저하되는 현상이다. 단순히 데이터 변수의 수가 증가하는 것이 아닌, 관측치 수보다 변수의 수가 많아지는 상황을 말한다. 차원의 저주가 그래서 정확히 뭘 말하는 걸까? 예를 들어, 1차원 데이터에 5개의 샘플이 있을 때, 이때 하나의 샘플은 전체 데이터에서 1/5의 밀집도를 가질 것이다. 여기서 만약 데이터가 2차원일때 하나의 샘플은 5*5 전체에서 1/25의 밀집도를 가지게 된다. 데이터가 3차원이라면? 하나의 샘플은 1/125의 밀집도를 가질것이다. 즉, 차원이 증가할수록 데이터의 밀집도는 줄어들고, 빈공간..

ML 2024.01.25

Bias-Variance Trade-off

이번 포스팅에서는 데이터를 다루면서 한번쯤 들어봤을 Bias-Variance Trade-off에 대해서 알아보고자 한다. Bias는 학습된 모델의 예측값 평균과 실제 값과의 차이를 의미한다. 즉, 높은 bias를 가질수록 제대로된 학습을 하지 못했다고 볼 수 있다. Variance는 예측값의 평균과 실제 값간의 차이를 의미한다. 언뜻 보면 비슷하다고 느낄 수 있으나, 둘은 다른 개념이다. Bias는 모델의 학습이 부족하여 제대로 된 값을 내지 못하는 것에서 오는 에러이고, Variance는 작은 노이즈에서도 overreact를 하는 것에서 오는 에러이다. (과민, Overfitting되었다는 뜻) 그럼 Bias와 Variance가 크고 작을 때 어떤 문제가 나타나는지에 대해 알아보자. Low Varian..

ML 2024.01.24

[Recommendation] 추천 시스템 - 콘텐츠 기반 필터링 (Contents-based Filtering)

🚦 이번 포스팅에서는 〰️ 📌 콘텐츠 기반 필터링 (Contents-based Filtering)이란? 📌 콘텐츠 기반 필터링 방법 우리가 영화를 추천받고 싶을 때 어떻게 할까? 나랑 성향이 비슷한 친구들이 본 영화를 찾아본다. 내가 좋아하는 감독, 장르, 키워드의 영화를 찾아본다. 이게 바로 협업 필터링 (Collaborative Filtering) Content Based Filtering 이다! 저번 포스팅에서는 협업 필터링에 대해 알아보았다. 이번 포스팅에서는 추천 시스템 알고리즘의 기본 중 두번째 방법인 콘텐츠 기반 필터링 (Content-based Filtering) 에 대해서 알아보자! 📌 콘텐츠 기반 필터링 (Contents-based Filtering)이란? : 사용자에가 특정 아이템..

ML/Recommendation 2024.01.20

[프로그래머스] LV1. 키패드 누르기

숫자가 {2,5,8,0} 일때를 잘 다루는것이 관건! 처음에는, 단순히 현재 위치와 target값을 빼주고, 그 값이 3이면 1으로 바꿔주는 계산방식을 생각했었다. 하지만 만약 target=6이고 현재 위치가(왼손이든 오른손이든) 7이라면, 실제거리는 3이지만 이 로직은 1이라고 말할 것이다. 따라서, 전체 키패드를 격자로 생각하고, 각각의 좌표를 구해준 뒤 좌표 거리 계산을 해주어야 한다! 자세한 내용은 주석을 참고바란다. #include #include #include using namespace std; /* 시작 : 왼손 엄지 - *(10), 오른손 엄지 - #(12) 상하좌우 한칸씩만 이동가능 1,4,7 => 왼손, 3,6,9 => 오른손 2,5,8,0(11) => 둘 중 가까운 손 (거리 같으..

[Recommendation] 추천시스템 - 협업 필터링(Collaborative Filtering)

🚦 이번 포스팅에서는 〰️ 📌 협업 필터링 (Collaborative Filtering)이란? 📌 협업 필터링 종류 1️⃣ Memory Based Approach ➡️ User-based Filtering ➡️ Item-based Filtering 2️⃣ Model Based Approach ➡️ Item-based Filtering 📌 협업 필터링의 한계점 우리가 영화를 추천받고 싶을 때 어떻게 할까? 나랑 성향이 비슷한 친구들이 본 영화를 찾아본다. 내가 좋아하는 감독, 장르, 키워드의 영화를 찾아본다. 이게 바로 협업 필터링 (Collaborative Filtering) Content Based Filtering 이다! 이번 포스팅에서는 추천 시스템 알고리즘의 기본 중 첫번째 방법인 협업 필터링 (..

ML/Recommendation 2024.01.19

[Recommendation] 추천시스템에 대해서

많은 AI 모델들이 점점 일상에 녹아들고 있는 현 시점에서, 가장 잘 녹아있는 분야는 단연 "추천(Recommendation)"분야라고 한다. 대표적인 예시로는 유튜브 알고리즘이나 넷플릭스, 인터넷 쇼핑몰 등에서 쉽게 찾아볼 수 있을 것이다. 그 중, 넷플릭스의 추천시스템에 대해 간략히 살펴보면서 어떤 방식을 채택하고 있는지 알아보자. 넷플릭스는 여러 요소를 활용하여 사용자의 시청 확률을 추정한다. 카테고리, 출시 연도, 제목, 장르 사용자가 매긴 평점, 시청기록 사용자자와 유사 취향을 가진 사용자의 시청 기록 사용자가 사용하는 기기, 요일, 위치 등 넷플릭스의 머신러닝 모델은 개별 사용자로부터 학습하고, 사용자의 이용 시간동안 데이터를 수집하며 업데이트한다. 따라서, 더 많은 이용시간을 가질수록 더 정..

ML/Recommendation 2024.01.18

[Error] CUDA error: invalid device ordinal 해결방법

BERT 돌리다가 이런 런타임 에러를 마주했다. 이건, 내 시스템의 GPU에 내가 호출한 GPU가 없어서 나타나는 에러인데, 시스템에 있는 디바이스들을 잘 확인해보고 호출해주어야 한다. 만약, 그런거 잘 모르겠지만 일단 확실하게 한개는 있다고 자신한다면 그냥 "cuda:0"을 사용해주면된다. 시스템에 있는 디바이스를 출력해보는 코드는 아래와 같다. from tensorflow.python.client import device_lib device_lib.list_local_devices() 이외에도 간단하게 있는지 여부와 몇개인지 출력하고싶으면 아래의 코드를 실행하면 된다. print(torch.cuda.is_available()) #GPU작동 가능여부 확인 print(torch.cuda.device_co..

ML 2024.01.18

[C++] 프로그래머스 LV1. 가장 많이 받은 선물 (Kakao 기출문제)

허허.. LV1 이라고 해서 완전 얕봤다가 map을 까먹은 나는야 바보 천치라는 것을 깨닫게 해주었다.. 물론 다른 방법이 많겠지만, 이게 가장 쉬운 접근법인것 같아 공유한다. 일단 다음달 선물을 계산하는 방법은 크게 다음과 같다. 주고 받은 선물 이력이 있는 경우 ➡️ 더 많이 준 사람에게 선물++ 주고 받은 선물 이력이 없는 경우 ➡️ 선물 지수 비교 후, 선물 지수 큰 사람에게 선물++ (선물 지수도 같으면 0) 총 3개의 map을 이용했는데, 주고받은 선물 확인용 선물 지수 확인용 다음 달에 받을 선물 개수 저장용 1번 map은 2차원으로 만들어 주었고 모든 gift를 돌면서 1번과 2번 map 값을 채워주었다. 만들어진 2차원 map(1번)을 다 검사하면 중복으로 검사가 되므로, 두번째 loop..

728x90