본문 바로가기

반응형

Programming/[Data Science]

(10)
[ML] 코사인 유사도 코사인 유사도 (Cosine Similarity) 내적공간의 두 벡터간 코사인 값을 이용하여 측정된 벡터간의 유사한 정도를 의미합니다. 두 벡터의 방향이 완전히 같을 경우 1, 90º의 각을 이룰 경우 0, 180º로 완전히 반대 방향인 경우 -1의 값을 갖습니다. 이 때 벡터의 크기는 값에 아무런 영향을 미치치 않습니다. 코사인 유사도는 특히 결과값이 [0,1] 범위로 떨어지는 양수 공간에서 사용됩니다. 정보 검색 및 텍스트 마이닝 분야에서 코사인 유사도는 두 문서의 유사를 측정하는 매우 유용한 방법입니다. 코사인 유사도가 널리 사용되는 이유 중 하나는 이것이 양수 공간 조건만 만족하면 몇 차원이든지 거리를 측정하는 것이 가능하기 때문입니다. 텍스트 매칭에 적용될 경우, A,B의 벡터로는 일반적으로 해..
[ML] 과적합(Overfitting)을 막는 방법들 모델의 과적합은 모델의 성능을 낮추는 주요 이슈입니다. 과적합을 막는 방법을 간단히 알아보겠습니다. 1. 데이터의 양을 늘리기 데이터의 양이 적을 경우, 데이터의 특정 패턴이나 노이즈를 쉽게 학습하여 과적합 현상 발생 확률이 증가합니다. 데이터의 양을 늘릴 수록 모델은 데이터의 일반적인 패턴을 학습하여 과적합을 방지할 수 있습니다. 의도적으로 기존의 데이터를 조금씩 변형하고 추가하여 데이터의 양을 늘리기도 하는데 이를 데이터 증식 또는 증강 (Data Augmentation)이라고 합니다. 이미지의 경우 데이터 증식이 많이 사용됩니다. (회전, 노이즈, 일부 수정 등) 2. 모델의 복잡도 줄이기 인공 신경망의 복잡도는 은닉층의 수나 매개변수의 수 등으로 결정됩니다. 과적합 현상이 포착됐을 때, 인공 신경..
[ML] pytorch로 다층 퍼셉트론 구현하여 손글씨 분류 1. 숫자 필기 데이터 소개 숫자 필기 데이터는 사이킷런 패키지에서 제공하는 분류용 예제 데이터입니다. 0부터 9까지의 숫자를 손으로 쓴 이미지 데이터입니다. 각 이미지는 0부터 15까지의 명암을 가지는 8 x 8 = 64 픽셀 해상도의 흑백 이미지입니다. 해당 이미지가 1,797개 있습니다. load_digits()를 통해 이미지 데이터를 로드할 수 있습니다. 로드한 전체 데이터를 digits에 저장합니다. %matplotlib inline import matplotlib.pyplot as plt # 시각화를 위한 모듈 임포트 from sklearn.datasets import load_digits digits = load_digits() # 1,979개의 이미지 데이터 로드첫 번째 샘플을 출력해보겠습..
[ML] 인공신경망 비선형 활성화함수 (Activation Function) 1.활성화 함수의 특징 - 비선형 함수(Nonlinear function) 비선형 활성화 함수는 입력을 받아 수학적 변환을 수행하고 출력을 생성하는 함수입니다. (시그모이드, 소프트맥스) 인공 신경망의 능력을 높이기 위해 은닉층을 계속 추가해 줘야하는데 선형 함수의 경우 단순하게 가중치의 곱의 형태가 되게 때문에 1회 추가한 것과 차이를 줄 수 없습니다. 따라서 모든 은닉층의 활성화함수로 선형함수를 사용하지 않습니다. 예를 들어 활성화 함수 f(x) = Wx라고 가정할 경우 f(f(f(x)))의 경우 f(x) = W^3x입니다. 이는 W^3 = k라고 했을 때 y(x) = kx로 1회 추가한 것과 차이가 없습니다. 2. 시그모이드 함수(Sigmoid function)와 기울기 소실 위 인공신경망은 순전파..
[ML] 다층 퍼셉트론 구현으로 XOR 문제 해결하기 단층 퍼셉트론은 직선으로 구분할 수 있는 문제 해결이 가능한데 XOR 문제의 경우 곡선으로 구간을 나누어야 문제 해결이 가능했습니다. ) 왼쪽 좌표평면과 같은 문제를 해결하기 위해 다층 퍼셉트론을 구현하여 XOR 문제를 확인해보겠습니다. 1. 파이토치로 다층 퍼셉트론 구현하기 필요한 모듈을 임포트합니다. import torch import torch.nn as nn device = 'cuda' if torch.cuda.is_available() else 'cpu' # GPU 연산 확인 # 랜덤시드 고정 torch.manual_seed(777) if device == 'cuda': torch.cuda.manual_seed_all(777) # XOR 문제 입출력 정..
[ML] 단층 퍼셉트론으로 XOR 문제 구현하기 1. 파이토치로 단층 퍼셉트론 구현하기 필요한 도구들을 불러옵니다. import torch import torch.nn as nn import torch.optim as optimGPU 연산이 가능할 경우 GPU 연산을 할 수 있도록 설정해줍니다. 지금은 cpu로 연산을 진행하겠네요. # GPU 연산이 가능할 경우에 GPU 연산을 할 수 있도록 설정 device = 'cuda' if torch.cuda.is_available() else 'cpu' torch.manual_seed(777) if device == 'cuda': torch.cuda.manual_seed_all(777) print(f'연산 장치 : {device}')XOR 문제에 해당하..
[ML] 퍼셉트론(Perceptron) 파이토치를 공부하며 기초 이론 부분을 다시 보고 있는데, 많은 도움이 되는 것 같다. 02. 퍼셉트론(Perceptron) 1. 퍼셉트론(Perceptron) 퍼셉트론(Perceptron)은 프랑크 로젠블라트(Frank Rosenblatt)가 1957년에 제안한 초기 형태의 인공 신경망으로 다수의 입력으로부터 하나의 결과를 내보내는 알고리즘이다. x는 입력값을 의미하며, W는 가중치, y는 출력값을 의미 실제 신경 세포 뉴런에서의 신호를 전달하는 축삭돌기의 역할을 퍼셉트론에선 가중치가 대신함 각각의 인공 뉴런에서 보내진 입력값 x는 각각의 가중치 W와 함께 종작치 인공 뉴런에 전달됨 입력값이 가중치와 곱해져서 인공 뉴런에 보내지고, 각 곱의 전체 합이 임계치(threshold)를 넘으면 종착지에 있는 인..
[ML] 머신 러닝 용어 이해하기 1. 머신 러닝 모델의 평가 검증용 데이터 : 모델의 성능을 평가하기 위한 용도가 아닌, 모델의 성능을 조정하기 위한 용도 (과적합 유무 판단, 하이퍼파라미터 조정) 하이퍼파라미터 : 값에 따라 모델 성능에 영향을 주는 매개변수, 사용자가 직접 정하는 변수 (학습률, 드롭아웃 비율 등) 매개변수 : 모델이 학습하는 과정에서 얻어지는 값 (W, b) 훈련용 데이터로 훈련을 모두 시킨 모델은 검증용 데이터를 사용하여 정확도를 검증하며 하이퍼파라미터를 튜닝(tuning) 함 하이퍼파라미터 튜닝이 끝났다면 검증용 데이터에 대해서도 일정 부분 최적화가 됐기 때문에 테스트 데이터를 갖고 모델의 성능을 평가 2. 분류(Classification)와 회귀(Regression) 2.1. 이진 분류 문제(Binary Cl..

반응형