반응형

mini batch란?

미니 배치(Mini-batch)는 데이터를 작은 그룹으로 나누어 신경망 모델의 학습을 수행하는 방법입니다. 일반적으로 전체 데이터셋을 한 번에 사용하여 학습하는 것보다 미니 배치를 사용하는 것이 계산 효율성과 일반화 성능 측면에서 유리합니다.

 

mini batch 학습 단계

  1. 데이터셋 분할: 전체 데이터셋을 작은 배치로 나눕니다. 배치는 주로 2 거듭제곱 개수로 설정됩니다(: 32, 64, 128 ).
  2. 순전파: 미니 배치에 대해 순전파를 수행하여 예측값을 계산합니다. 입력 데이터와 예측값을 기반으로 손실 함수를 계산합니다.
  3. 역전파: 손실 함수를 사용하여 역전파를 수행하여 가중치와 편향에 대한 그래디언트(gradient) 계산합니다.
  4. 매개변수 업데이트: 계산된 그래디언트를 사용하여 가중치와 편향을 업데이트합니다. 이를 위해 최적화 알고리즘(: 확률적 경사 하강법) 사용합니다.
  5. 위의 2~4단계를 반복: 나머지 미니 배치에 대해서도 순전파, 역전파, 매개변수 업데이트를 반복하여 모든 미니 배치에 대한 학습을 완료합니다.

 

mini batch 장점

  • 계산 효율성: 전체 데이터셋을 한 번에 처리하는 것보다 작은 배치로 처리하는 것이 계산 속도를 향상시킵니다. 특히 GPU와 같은 병렬 컴퓨팅 환경에서 효과적입니다.
  • 일반화 성능: 미니 배치 학습은 모델이 더 일반화되도록 도움을 줍니다. 미니 배치를 사용하면 데이터의 다양성을 높이고, 모델이 더 일반적인 패턴을 학습하도록 돕습니다.
  • 경사 하강법의 안정성: 미니 배치 학습은 학습 과정에서 그래디언트의 평균을 사용하기 때문에 노이즈에 대한 영향을 줄일 있습니다. 이는 학습 과정의 안정성을 향상시킵니다.
반응형

'머신러닝 & 딥러닝 > 용어' 카테고리의 다른 글

Bounding box coordinates(in 딥러닝)  (0) 2023.04.09
반응형
반응형

SVM이란

SVM은 "Support Vector Machine(서포트 벡터 머신)"의 약자로, 패턴 인식, 분류 및 회귀 분석 등의 머신러닝 문제에 널리 사용되는 지도 학습 알고리즘입니다.

SVM은 주어진 데이터를 고차원 공간으로 매핑하여 데이터를 분류하는 결정 경계를 찾는 기법입니다. 이를 위해 SVM은 데이터 포인트들을 서로 구분하는 최대 마진(Margin)을 갖는 결정 경계를 찾는 것을 목표로 합니다. 이 최대 마진을 갖는 결정 경계는 데이터를 더욱 정확하게 분류할 수 있는 경계라고 볼 수 있습니다.

SVM은 다음과 같은 주요 특징을 갖습니다:

  1. 선형 분류와 비선형 분류: SVM은 선형 분류 문제에서 뛰어난 성능을 발휘할 수 있습니다. 그러나 데이터가 선형적으로 분리되지 않는 경우에도 커널 트릭(kernel trick)을 사용하여 비선형 결정 경계를 생성할 수 있습니다. 커널 트릭은 데이터를 고차원 공간으로 매핑하여 선형 분류를 수행하는 것보다 효율적인 방법입니다.
  2. 서포트 벡터: SVM은 분류 경계와 가장 가까이 위치한 데이터 포인트들을 "서포트 벡터"라고 부릅니다. 이 서포트 벡터들이 결정 경계를 정의하는 데 중요한 역할을 합니다. SVM은 오직 서포트 벡터들만을 사용하여 결정 경계를 구성하고, 이를 통해 계산 및 예측 과정에서 효율성을 높입니다.
  3. 커널 함수: SVM은 커널 함수를 사용하여 데이터를 고차원 공간으로 매핑합니다. 커널 함수는 입력 데이터의 특성을 적절하게 변환하여 선형 불가능한 문제를 해결할 수 있도록 돕습니다. 대표적인 커널 함수로는 선형 커널, 다항식 커널, 가우시안(RBF) 커널 등이 있습니다.

SVM 데이터의 분류 외에도 회귀 분석에도 사용될 있습니다. SVM 회귀는 주어진 데이터 포인트들이 일정한 마진 내에서 얼마나 위치하는지를 고려하여 회귀 분석을 수행합니다.

 

 

 

추가 지식

- 최대 마진(Maximum Margin) SVM 데이터를 분류하는 결정 경계와 클래스 간의 가장 넓은 간격을 의미합니다.

반응형

'머신러닝 & 딥러닝' 카테고리의 다른 글

Feature space  (0) 2023.05.14
Failed to get CPU frequency: 0 Hz  (0) 2023.05.06
tf.config.set_visible_devices()  (0) 2023.05.06
[library] seaborn  (0) 2023.04.28
AUC란?  (0) 2023.04.26
반응형
반응형

Feature space이란?

머신러닝에서 "feature space(특성 공간)"란 데이터의 특성을 나타내는 변수들로 이루어진 공간을 의미합니다. 각 데이터 포인트는 이 특성 공간 상의 한 점으로 표현됩니다.

데이터의 특성은 문제에 따라 다르지만, 일반적으로 숫자, 범주형 값, 텍스트, 이미지 등으로 표현됩니다. 이러한 특성들은 모델이 패턴을 학습하고 예측을 수행하는 데 사용됩니다.

예를 들어, 이미지 분류 문제에서 각 이미지는 특성 공간 상의 한 점으로 표현됩니다. 이 특성 공간은 이미지의 각 픽셀 값을 차원으로 갖는 공간일 수 있습니다. 따라서 64x64 크기의 이미지는 4,096 차원의 특성 공간으로 표현될 수 있습니다.

Feature space의 차원 수는 데이터셋에 따라 다를 수 있으며, 머신러닝 알고리즘의 성능과 학습의 복잡도에 영향을 줄 수 있습니다. 때로는 feature space의 차원을 줄이는 차원 축소 기법을 사용하기도 합니다. 이를 통해 고차원 데이터를 저차원의 특성 공간으로 매핑하여 계산 및 시각화의 효율성을 높일 수 있습니다.

 

Feature space 그림 설명

위의 그림은 2차원 feature space를 나타냅니다. 여기에는 두 개의 특성, Feature 1과 Feature 2가 있습니다. 각각의 데이터 포인트는 특성 공간 상의 한 점으로 표현됩니다.

예를 들어, (3, 2)는 Feature 1의 값이 3이고 Feature 2의 값이 2인 데이터 포인트를 나타냅니다. 마찬가지로, (1, 4), (5, 6), (2, 1)은 각각 다른 데이터 포인트를 나타냅니다.

머신러닝 모델은 이러한 데이터 포인트들을 분석하여 패턴을 학습하고 예측을 수행합니다. Feature space에서는 데이터 포인트들 간의 상대적인 위치와 패턴을 이해하여 결정 경계를 학습할 수 있습니다. 이렇게 feature space를 이해하면, 머신러닝 모델이 어떻게 데이터를 분류하고 예측하는지 더 잘 이해할 수 있습니다.

 

Feature space에서 feature 간의 distance 측정 방법

1. 유클리디안 거리(Euclidean distance): 유클리디안 거리는 feature space에서 가장 흔히 사용되는 거리 측정 방법입니다. 두 점 A(x1, y1)와 B(x2, y2) 사이의 유클리디안 거리는 아래와 같이 계산됩니다.

distance = sqrt((1 - 3)^2 + (4 - 2)^2) = sqrt(4 + 4) = sqrt(8) ≈ 2.83

 

예를 들어, 2차원 feature space에서 (3, 2)와 (1, 4) 사이의 거리를 계산하려면 다음과 같이 계산합니다:

distance = sqrt((x2 - x1)^2 + (y2 - y1)^2)

 

2. 맨하탄 거리(Manhattan distance): 맨하탄 거리는 두 점 사이의 가로 및 세로 방향의 거리를 합산하여 계산하는 방법입니다. 맨하탄 거리는 두 점 사이의 "도시 블록" 거리라고도 불립니다. 두 점 A(x1, y1)와 B(x2, y2) 사이의 맨하탄 거리는 아래와 같이 계산됩니다.

distance = |1 - 3| + |4 - 2| = 2 + 2 = 4

 

예를 들어, 2차원 feature space에서 (3, 2)와 (1, 4) 사이의 거리를 맨하탄 거리로 계산하면 다음과 같습니다:

distance = |x2 - x1| + |y2 - y1|

 

3. 코사인 유사도(Cosine similarity): 코사인 유사도는 벡터 간의 방향성을 고려하여 거리를 측정하는 방법입니다. 특히, 희소한(high-dimensional sparse) 벡터에 유용하게 사용됩니다. 두 벡터 A와 B 사이의 코사인 유사도는 아래와 같이 계산됩니다.

similarity = dot(A, B) / (norm(A) * norm(B))

 

여기서 **dot(A, B)**는 벡터 A와 B의 내적(dot product)을 나타내며, **norm(A)**와 **norm(B)**는 각각 벡터 A와 B의 노름(norm)을 나타냅니다.

 

추가 지식

sqrt():  x의 제곱근의 비음수 값을 계산합니다. 리턴 값으로는 제곱근 결과를 리턴합니다. x가 음수인 경우, 함수는 errno EDOM으로 설정하고 0을 리턴합니다.

반응형

'머신러닝 & 딥러닝' 카테고리의 다른 글

SVM  (0) 2023.05.14
Failed to get CPU frequency: 0 Hz  (0) 2023.05.06
tf.config.set_visible_devices()  (0) 2023.05.06
[library] seaborn  (0) 2023.04.28
AUC란?  (0) 2023.04.26
반응형

반응형

 

문제

현재 mac m1 pro 사용중에 from tensorflow.keras.models import Sequential 호출해서 사용하는데

Failed to get CPU frequency: 0 Hz error가 발생했습니다.

 

 

해결

원인은 GPU를 사용하다 m1 pro에는 gpu 설정하는게 달라 발생하는 에러인거 같습니다.

그래서 tf.config.set_visible_devices() 사용해서 CPU만 사용하도록 수정했습니다.

tf.config.set_visible_devices([], 'GPU')

저는 이렇게 설정하니 에러가 해결되었습니다.

https://infoinhere.tistory.com/60

 

tf.config.set_visible_devices()

tf.config.set_visible_devices()이란? tf.config.set_visible_devices( devices, device_type=None ) device는 실제 GPU 장비의 이름이 들어가고, device_type에는 CPU 또는 GPU를 넣습니다. 만약 CPU만 사용할려면 device에 빈 리스트

infoinhere.tistory.com

 

반응형

'머신러닝 & 딥러닝' 카테고리의 다른 글

SVM  (0) 2023.05.14
Feature space  (0) 2023.05.14
tf.config.set_visible_devices()  (0) 2023.05.06
[library] seaborn  (0) 2023.04.28
AUC란?  (0) 2023.04.26
반응형
반응형

tf.config.set_visible_devices()이란?

tf.config.set_visible_devices(
    devices, device_type=None
)

device는 실제 GPU 장비의 이름이 들어가고, device_type에는 CPU 또는 GPU를 넣습니다.

 

만약 CPU만 사용할려면 device에 빈 리스트를 넣고 device_type에는 GPU를 넣으면 됩니다

예시) tf.config.set_visible_devices([], 'GPU')

 

반응형

'머신러닝 & 딥러닝' 카테고리의 다른 글

Feature space  (0) 2023.05.14
Failed to get CPU frequency: 0 Hz  (0) 2023.05.06
[library] seaborn  (0) 2023.04.28
AUC란?  (0) 2023.04.26
ModuleNotFoundError: No module named ""  (0) 2023.04.25
반응형
반응형

문제

glob()을 통해 파일을 가져올려고 하는데 TypeError: path should be path-like or io.BytesIO, not <class 'list'> 발생했습니다.

 

코드

sign = list(test_path.glob(f'{i}/*'))

 

예상 원인

뒤에 따라오는 from tensorflow.keras.preprocessing.image import load_img 에서 에러가 발생하고 있었습니다.

 

해결

load_img() 함수에 list를 넣어서 발생한거 같아 수정했더니 에러가 발생하지 않았습니다.

 

* load_img()

tf.keras.utils.load_img(
    path,
    grayscale=False,
    color_mode='rgb',
    target_size=None,
    interpolation='nearest',
    keep_aspect_ratio=False
)
반응형
반응형
반응형

 

상황

현재 저는 M1 Pro를 사용하고 있습니다.

또한 .kaggle 데이터를 불러오고 사용하는데 Jupyter Notebook을 사용하고 있습니다.

 

문제는 현재 디렉토리에서는 kaggle api를 사용할 수 없어서 다른 .kaggle 디렉토리에 파일 다운로드해서 사용해야 하는데

완전 다른 디렉토리에서 kaggle 데이터셋을 어떻게 불러오냐인데 쉽게 해결할 수 있습니다.

 

해결

먼저 import os 합니다. 

이후 os.chdir("/Users/'계정 이름'/.kaggle") 하게 되면 디렉토리 위치가 바뀌게 되면서 kaggle 데이터셋 정보를 가져올 수 있게 됩니다.

확인은 os.getcwd()로 확인할 수 있습니다.

반응형
반응형
반응형

 

문제

conda install kaggle로 kaggle 설치 후 kaggle api를 통해 쉽게 kaggle 데이터셋을 다운 받을려고 하는데 kaggle 호출이 되지 않는 상황입니다. 설치한 위치가 model 개발하고 있는 폴더여서 kaggle.json 파일 위치도 model 폴더 안에 넣어두었는데 그게 문제 였습니다.

 

 

해결

현재 kaggle.json이 있는 폴더 위치에서 아래 글 복붙 하시면 됩니다.

>

mkdir -p ~/.kaggle && mv kaggle.json ~/.kaggle/kaggle.json

 

반응형

+ Recent posts