IT 프로그래밍/AI 36

Numpy

Numerical Python의 약자고성능 과학 계산용 패키지로 강력한 N차원 배열 객체범용적 데이터 처리에 사용 가능한 다차원 컨테이너정교환 브로드캐스팅 기능파이썬의 자료형 list와 비슷하지만, 더 빠르고 메모리를 효율적 관리반복문 없이 데이터 배열 처리 지원 빠르고 편리데이터 과학 도구에 대한 생태계의 핵심 a2 = np.array([ [1,2,3], [4,5,6], [7,8,9]])print(a2)print(a2.shape)print(a2[0,0], a2[1,0], a2[2,1]) a3 = np.array([[ [1,2,3], [4,5,6], [7,8,9] ], [ [1,2,3], [4,5,6], [7,8,9] ], [ [1,2,3], [4,5,6..

pytorch / dataset

파이토치는 torch.utils.data의 Dataset과 DataLoader 사용가능합니다. from torch.utils.data import Dataset, DataLoader#transforms : 전처리할 때 사용하는 메소드#transforms에서 제공하는 클래스 이외는 일반적으로 클래스를 따로 만들어 전처리 단계를 진행 import torchvision.transforms as transformsfrom torchvision import datasets#DataLoader의 인자로 들어갈 transform을 미리 정의할 수 있고, Compose를 통해 리스트 안에 순서대로 전처리 전행#ToTensor()를 하는 이유는 torchvision이 PIL Image 형태로만 입력을 받기 때문에 데이터..

Pytorch

torch : 메인 네임스페이스, 텐서 등의 다양한 수학 함수가 포함torch.autograd : 자동 미분 기능을 제공하는 라이브러리torch.nn : 신경망 구축을 위한 데이터 구조나 레이어 등의 라이브러리torch.multiprocessing : 병렬 처리 기능을 제공하는 라이브러리torch.optim : SGD를 중심으로 파라미터 최적화 알고리즘 제공torch.utils : 데이터 조작 등 유틸리티 기능 제공 torch.onnx : ONNX, 서로 다른 프레임워크 간의 모델을 공유할 때 사용 텐서(Tensors)데이터 표현을 위한 기본 구조로 텐서를 사용텐서는 데이터를 담기위한 컨테이너로서 일반적으로 수치형 데이터를 저장넘파이(Numpy)의 ndarray와 유사GPU를 사용한 연산 가속 기능imp..

Broad casting

인공지능에서 선형대수는 빼놓을 수 없는 존재이고벡터화된 연산을 지원하는 라이브러리 중에서 broad casting이 쓰인다. 이는 서로 다른 형태의 배열 간 연산을 자동으로 맞춰주는 규칙이다. import numpy as npa = np.array([1, 2, 3]) # shape: (3,)b = 2 # shape: ()result = a + b # 결과: array([3, 4, 5])b는 스칼라이고 넘파이는 b를 array([2,2,2]) 처럼 자동으로 확장해서 a와 덧셈을 수행합니다. 이를 바로 브로드캐스팅이라고 합니다. A = np.array([[1, 2, 3], [4, 5, 6]]) ..

[Transformer]1

벡터가 선형변환이 되고 있는 것 weight를 곱하는 것은 곧 선형변환입니다. 벡터를 가만두지 않고 이동시키는 것 선형적인 변환을 통해 이동하는 것이 선형변환이고 어디다가 놓을지를 학습시키는 것입니다. n번째 시점에서 어떤 단어를 볼지 보고서 weighted sum 그 vector를 context vector로 삼고 y햇을 뽑아서 softmax를 하는 것이 바로 seq-to-seq입니다. 기존에는 C1=C2=C3=C4같이 H3로 쓴 것입니다. 하지만 불균형적으로 담겨있습니다. 어떤 단어를 많이 담는지는 모릅니다. 그건 ai가 하는 것입니다. RNN -> RNN + attention -> Transformer RNN+ attention의 문제점멀수록 잊혀집니다. 그리고 갈수록 흐려지는 정보에 at..

워드임베딩 , 트랜스포머

Word Embedding워드 임베딩은 단어를 벡터로 다루는 것입니다. 컴퓨터는 모든 거를 숫자로 다루어야 합니다. 픽셀 값 전부 RGB를 읽어서 처리해왔습니다. 각 클래스 또한 벡터로 나타냅니다. 벡터에서 하나만 핫 상태가 되는 원핫인코딩을 사용합니다. 원핫인코딩CAT [1,0] DOG[0,1] 전체를 0 , 1 숫자로 표현해서 나누기 단어들을 벡터 상에 표현을 해야 합니다. 예를들면 apple이나 banana를 벡터로 표현하려고 한다면 원핫인코딩을 할 수 있겠지만 사전에 있는 모든 단어를 원핫인코딩을 한다면 10만개의 단어가 있다는 가정하에 10만차원을 할당해야 하는 문제가 발생합니다. 또한 원핫인코딩은 단어들간의 관계를무시해버립니다. 과일이나 탈 것 이런 범주 안에서는 같은 범주는 비슷한 곳에 있..

[VLM]

지속적인 딥러닝으로 인해 이미티 Caption은 어느정도 해결이 되었습니다. 이미지를 넣고 질문을 하면 답을 해주는 것 그리고 추론하는 문제를 내줄 수 있습니다. 이제 VLM 모델들은 무쉽게 접할 수 있습니다. Llama4, Phi vision-multimodal도 있습니다. 가장 이해하기 쉬운 것은 DeppSeek-VL입니다. 도면이 무엇인지 수식까지 이해하는 걸 볼 수 있습니다. 이미지가 Input으로 들어온다면 vision encoder로 맞춰서 token으로 자르고 2048 dimension을 가진 576개의 token이 나옵니다. 이것이 LLM의 Input으로 들어가면 이미지 정보가 토큰으로 들어가고 llm을 통해 다음 텍스트 토큰을 예측합니다. 1. adapter만 트레이닝을 시킴2. J..

다중분류 이진분류 요약

출력 차원을 늘려야 하는 이유이진 분류에서는 예를 들어 강아지 = 1, 고양이 = 0처럼 단일 출력 노드로도 충분합니다. 그러나 이렇게 단일 출력으로 분류하게 되면, 중간값(예: 0.5)처럼 애매한 결과가 나와 오류가 발생할 수 있습니다. 이를 방지하고 더 복잡한 다중 분류 문제를 해결하기 위해 출력 차원을 늘리는 방식, 즉 출력 노드를 클래스 수만큼 구성하는 방식을 사용합니다. 예를 들어, 분류 대상이 3종류라면 다음과 같이 표현합니다:강아지 → [1,0,0]고양이 → [0,1,0]토끼 → [0,0,1]이렇게 하면 각 클래스에 해당하는 확률 분포를 명확히 표현할 수 있습니다. Softmax: 다중 분류에서의 확률 출력다중 분류에서는 출력이 확률 분포의 형태를 띄어야 하므로 다음 조건을 만족해야 합니다:..

인공신경망은 MLE 기계

인공신경망(Artificial Neural Network, ANN)은 결국 하나의 함수로 볼 수 있습니다. 이 함수 fff는 다양한 weight와 bias, 즉 파라미터들로 구성된 함수이며, 입력 x가 주어졌을 때 출력은 f(x)가 됩니다. 즉, 신경망은 파라미터화된(parameterized) 함수로서, 주어진 입력에 대해 적절한 출력을 내는 함수 f_w(x)를 학습합니다. 예를 들어 수학에서 x→f→x2처럼, 어떤 입력 x가 함수 f를 통해 f(x)로 변환되는 것처럼, 신경망도 입력 x를 받아 출력합니다. 이때 출력된 fw​(x)는 정답 레이블 y에 대한 확률 분포, 즉 조건부 확률 분포 p(y∣fw(x))을 따르게 됩니다. 이 확률 분포를 어떻게 모델링하느냐에 따라 신경망의 출력 해석이 달라집니다. ..

[Loss function] MSE vs log-likelihood

확률 곱셈의 수치적 불안정성과 로그 변환의 필요성if 강아지사진 q를 최대화해야else if 고양이사진 q를 최소화해야확률 q를 최소화하는 것은, 수학적으로 1 - q를 최대화하는 것과 같습니다.이 개념은 베르누이 분포의 확률 표현인q^p * (1 - q)^(1 - p)을 최대화하는 것과도 같습니다. 이 수식은 p가 1일 때는 q, p가 0일 때는 1 - q를 취하는 구조로, 주어진 정답에 따라 올바른 확률을 선택하여 곱하는 방식입니다. 이는 독립시행에서 전체 확률을 계산하기 위해 각 시행의 확률을 곱하는 방식과 같습니다. 예를 들어, 어떤 모델이 하나의 데이터에서 정답을 0.9 확률로 맞춘다고 하면, 이를 100번 반복하면 전체 확률은 0.9^100 ≈ 0.000026이 됩니다. 이처럼 0과 1 사이의..