썸네일 Triplet Loss Triplet Loss단어에서 힌트를 얻을 수 있듯이 총 3가지 부류의 데이터를 학습을 한다.이 Loss는 2010년대에 많이 사용되었던 loss인데, 주로 Metric Learning을 위해 사용되었다. Triplet Loss는 기준이 되는 Anchor 데이터, Anchor 데이터와 다른 class에 속하는 Negative 데이터, Anchor 데이터와 같은 class에 속하는 Positive 데이터를 가지고 학습을 한다.Anchor와 다른 class인 Negative point는 Anchor와 같은 class인 Positive point 보다 'α만큼 더' 멀리 떨어져있어야한다를 학습시키는 전략이다. 이때, 단순히 더 멀리 떨어져있어야한다가 아닌 'α만큼 더' 멀리 떨어져있어야한다라는 조건을 주는 이..
썸네일 차원의 저주 (curse of dimensionality) 🧩 차원의 저주예전 Lab실에서 차원 축소 기법인 PCA에 대해 고민을 할때부터 알고있다고 착각했던 적이 있어서 정확히 알아보는 시간이 필요했다. 🖼️  이미지는 "고차원 데이터" 다800x600 픽셀의 RGB 이미지를 예로 들어보면, 이 이미지를 데이터로 표현할 때는 800x600x3, 즉 총 1,440,000차원으로 나타낼 수 있습니다. 이때 "이미지가 2차원 데이터가 아닌가?"라는 의문이 들 수 있다. 🔍 이미지는 왜 고차원 데이터일가? (생략가능)더보기하지만 여기서 말하는 "2차원"은 기하학적인 관점에서의 공간적 구조를 뜻한다. 이미지를 생각해보면, 각 픽셀은 (x, y)라는 2차원 좌표를 가지고 있다. 그리고 각 픽셀의 R, G, B 값은 각각 (0~255) 사이의 값을 가지며, 이 세 가..
썸네일 Mocking을 통해 Test Code 작성하기 모킹이란모킹(mocking)은 외부 서비스에 의존하지 않고 독립적으로 실행이 가능한 단위 테스트를 작성하기 위해서 사용되는 테스팅 기법이다. 단위 테스트를 작성할 때 외부에 의존하는 부분을 임의의 가짜로 대체하는 기법이 자주 사용되는데 이를 모킹(mocking)이라고 한다.unittest.mock 모듈의 patch() 데코레이터Mock 객체 설정하기mocking은 mock이라고 불리는 가짜 객체를 생성하는 것부터 시작한다.이 mock 객체가 어떻게 작동을 할지를 지정해줄 수 있으며, 이 mock 객체는 자신을 상대로 어떤 작업이 일어났는지를 기억한다.먼저 호출되었을 때 특정 값을 리턴하는 mock 객체는 return_value 옵션을 이용해서 생성할 수 있다.>>> from unittest.mock im..
[Debug] 디버깅하느라 print해놨는데 어디에 해놓았는지 모르는 경우 말 그대로이다. 디버깅하느라 print해놨는데 code 어디에 해놓았는지 모르는 경우 사실 패키지를 직접 수정하는 것은 일반적으로 권장되지 않는다.하지만 내가 건들였다가 계속 쓸데없는 부분들이 함께 logging되고있는 경우 grep을 사용하면 된다. 눈에 보이는 코드 상에서 찾을때는grep -R "{print문에서 나오는 string부분: 내가 적었던 부분이라고 확신이 있는 부분}" . 또는 가상환경 패키지 내부를 수정했던 것 같다는 경우에는 grep -R "{print문에서 나오는 string부분: 내가 적었던 부분이라고 확신이 있는 부분}" {가상환경 폴더} 이렇게 찾으면 된다.
썸네일 [Train] ControlNet 학습시키기 https://github.com/lllyasviel/ControlNet/blob/main/docs/train.md  ControlNet/docs/train.md at main · lllyasviel/ControlNetLet us control diffusion models! Contribute to lllyasviel/ControlNet development by creating an account on GitHub.github.com ControlNet을 학습시켜보자. 이 문서에 잘 나와있긴하지만, 몇가지 디버깅했던 내용을 포함해서 적어보려한다. ControlNet은 github, huggingface 모두 다 올라와있는데, github에는 코드 중심으로, huggingface에는 데이터 중심으로 나..
썸네일 [ML/DL] 소프트맥스 회귀/다항 로지스틱 회귀 소프트맥스 회귀는 다중 클래스에서 회귀를 사용할때 많이 사용되는 방법이다. 각 특징값에 해당하는 가중치들을 각 특징값과 곱해준 값들을 더해주어 각 클래스 k에 대한 점수를 계산한다. 그러면 점수가 클래스 마다 1개씩 나오므로 총 k개가 나올 것이다. 이 k개의 점수들을 softmax 함수에 넣고 softmax값을 획득한다. 이렇게 되면 k개의 softmax값의 합은 1이 되는 다중 클래스 회귀가 된다. 로지스틱 회귀와 마찬가지로 기본적으로 소프트맥스 회기 분류기는 추정 확률, 즉 softmax값이 가장 높은 클래스를 선택한다.
썸네일 [ML/DL] Entropy, CrossEntropy, KL divergence 개념 정리 KL divergence 예측 분포의 엔트로피와 실제 분포에 대한 엔트로피간의 차이 측정 measure Entropy 불확실성을 수식으로 나타냄 (엔트로피가 높다는 것은 불확실한 정보가 많다는 것) (주사위의 엔트로피가 동전의 엔트로피보다 높음.) CE Loss 내가 예측한 분포와 실제 분포로 구성된 함수로 내가 예측한 분포에 대한 엔트로피 Reference https://velog.io/@rcchun/%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D-%ED%81%AC%EB%A1%9C%EC%8A%A4-%EC%97%94%ED%8A%B8%EB%A1%9C%ED%94%BCcross-entropy [머신러닝] 크로스 엔트로피(cross entropy) 엔트로피는 불확실성의 척도로 정보이론에서의 엔..
썸네일 [NLP] 라마(LLaMA) 정리 Introduction 라마는 메타(Meta)가 만들어낸 초거대 Language model로 2023년 2월 24일에 공개되었다. Meta가 만든 Langauge model 의 첫 시작은 아니었다. 첫 시작은 OPT라는 모델이었는데, GPT3와 모델 크기가 같지만 성능은 그만큼 잘 나오지 않아서 논문에 자랑보다는 왜 성능이 안나오는지에 대한 고민이 많다. 그렇게 OPT이후에 나온 모델이 라마이다. 라마와 OPT가 나온 시기적 차이사이에는 딥마인드의 친칠라 모델 논문에서 언어모델이 학습 데이터를 충분히 투입하지 않아 덜 학습된 것 같다는 주장이 있었다. 라마도 이 아이디어를 적용해 GPT3의 모델 크기는 반도 안되지만 데이터를 4배 더 투입하여 이전보다는 좋은 성능을 내는 모습을 보여주었다. 라마1은 4가..
썸네일 Colab 단축키 정리 [실행 관련 단축키] 1. Ctrl + Enter = 해당 셀을 실행하고 커서를 해당 셀에 두는 경우 (결과 값만 보고자 할 때) 2. Shift + Enter = 해당 셀을 실행하고 커서를 다음 셀로 넘기는 경우 (여러가지 값을 빠르게 출력할 때) 3. Alt + Enter = 해당 셀을 실행하고 셀을 삽입한 후 커서를 삽입한 셀로 넘기는 경우 (다음 작업 공간이 없을 때) [셀 삽입/삭제 관련 단축키] Ctrl + M A = 코드 셀 위에 삽입 Ctrl + M B = 코드 셀 아래 삽입 Ctrl + M D = 셀 지우기 Ctrl + M Y = 코드 셀로 변경 Ctrl + M M = 마크다운 셀로 변경 Ctrl + M Z = 실행 취소 (*MAC을 사용하는 경우 Ctrl 대신 Command) 기본적인 ..
썸네일 [ML/DL] CNN 알고리즘 CNN 알고리즘 CNN은 Convolution과 Pooling을 반복적으로 사용하면서 불변하는 특징을 찾고, 그 특징을 입력데이터로 Fully-connected 신경망에 보내 Classification을 수행합니다. CNN 알고리즘 - Convolutional Neural Network (합성곱 신경망) 이미지를 분석하기 위해 패턴을 찾는데 유용한 알고리즘으로, 이미지를 직접 학습하고 패턴을 사용해 이미지를 분류한다. CNN의 핵심적인 개념은 이미지의 공간정보를 유지하며 학습한다는 것이다. CNN은 필터링 기법을 인공신경망에 적용함으로써 이미지를 더욱 효과적으로 처리하기위해 제안되었으며 현재 딥 러닝에서 이용되고 있는 형태의 CNN이 제안되었다. 기존의 필터링 기법은 고정된 필터를 이용하여 이미지를 처리..
썸네일 [GitHub] gitignore에 추가했는데 계속 Changes에 남아있는 경우 해결 방법 너는 무시하라고 했지만 git은 이미 변화를 감지하고 있기때문에 생기는 일이다. solution git rm -r --cached . git add . git commit -m "Fix untracked files" git push