목록K 개발자 (145)
K 개발자
순환 뉴런recurrent neuron과 순환 층 순환 신경망recurrent neural networks은 (활성화 신호가 입력층에서 출력층 한 방향으로만 흐르는) 피드포워드 신경망과 비슷하지만 뒤쪽으로 순환하는 연결도 있다는 점이 다르다. (입력을 받아 출력을 만들고 자신에게도 출력을 보내는 뉴런으로 구성) 각 타임 스텝time step $t$ (또는 프레임frame) 마다 순환 뉴런은 $x_ {(t)}$와 이전 타임 스텝의 출력인 $y_ {(t-1)}$을 입력으로 받는다. (첫 번째 타임 스텝에서는 이전 출력이 없으므로 일반적으로 0으로 설정) 각 순환 뉴런은 입력 $x_ {(t)}$와 이전 타임 스텝의 출력 $y_ {(t-1)}$을 위한 두 벌의 가중치를 가진다. (이 가중치 벡터를 $w_ {x}..
합성곱 층convolutional layer 첫 번째 합성곱 층의 뉴런은 입력 이미지의 모든 픽셀에 연결되는 것이 아니라 합성곱 층 뉴런의 수용장 안에 있는 픽셀에만 연결 두 번째 합성곱 층에 있는 각 뉴런은 첫 번째 층의 작은 사각 영역 안에 위치한 뉴런에 연결 이런 구조는 네트워크가 첫 번째 은닉층에서는 작은 저수준 특성에 집중하고, 그다음 은닉층에서는 더 큰 고수준 특성으로 조합해나가도록 도와준다. 수용장 사이에 간격을 두어 큰 입력층을 훨씬 작은 층에 연결하는 것도 가능 (한 수용장과 다음 수용장 사이 간격을 스트라이드stride라고 한다.) 필터filter(합성곱 커널convolution kernel) 뉴런의 가중치는 수용장 크기의 작은 이미지로 표현될 수 있다. 층의 전체 뉴런에 적용된 하나의..
텐서플로에서 데이터를 효율적으로 적재, 파싱, 전처리 메모리 용량에 맞지 않는 아주 큰 규모의 데이터셋으로 딥러닝 시스템을 훈련해야 하는 경우가 많다. 다른 딥러닝 라이브러리를 사용해서는 대규모 데이터셋을 효율적으로 로드하고 전처리하도록 구현하기가 까다롭지만 텐서플로 데이터 API는 이를 쉽게 처리 텐서플로가 멀티스레딩, 큐, 배치, 프리페치prefetch 같은 상세한 사항을 모두 대신 처리해주며 데이터 API는 tf.keras와 잘 동작 기본 기능으로 데이터 API는 텍스트 파일(e.g. CSV 파일), 고정 길이의 레코드를 가진 이진 파일, 텐서플로의 TFRecord 포맷을 사용하는 이진 파일에서 데이터를 읽을 수 있다. (이 포맷은 길이가 다른 레코드를 지원) TFRecord는 일반적으로 (오픈 소..
수동 미분 미적분을 사용하여 편도함수를 유도 함수가 아주 복잡해지면 번거롭고 실수할 위험이 크다. 유한 차분 근사finite difference approximation $x_ {0}$에서 함수 $h(x)$의 도함수 ${h}'(x_ {0})$는 그 포인트에서 함수의 기울기 ($x$가 포인트 $x_ {0}$에 무한히 가까워질 때 두 점을 지나는 접선의 기울기) ${h}'(x_ {0})=\lim_{x \to x_ {0}}\frac{h(x)-h(x_ {0})}{x-x_ {0}}=\lim_{\varepsilon \to 0}\frac{h(x_ {0}+\varepsilon)-h(x_ {0})}{\varepsilon}$ (뉴턴 차분몫Newton's difference quotient) 결과가 정확하지는 않다. (다른..
텐서플로 훑어보기 텐서플로는 강력한 수치 계산용 라이브러리 특히 대규모 머신러닝에 잘 맞도록 튜닝되어 있다. (하지만 계산량이 많이 필요한 어떤 작업에도 사용 가능) 핵심 구조는 넘파이와 비슷하지만 GPU를 지원 (여러 장치와 서버에 대해서) 분산 컴퓨팅을 지원 일종의 JITjust-in-time 컴파일러를 포함한다. 속도를 높이고 메모리 사용량을 줄이기 위해 계산을 최적화한다. 이를 위해 파이썬 함수에서 계산 그래프computation graph를 추출한 다음 최적화하고 (e.g. 사용하지 않는 노드node를 가지치기) 효율적으로 실행 (e.g. 독립적인 연산을 자동으로 병렬 실행) 계산 그래프는 플랫폼에 중립적인 포맷으로 내보낼 수 있으므로 한 환경(e.g. 리눅스에 있는 파이썬)에서 텐서플로 모델을..
그레이디언트 소실과 폭주 문제 그레이디언트 소실vanishing gradient : 알고리즘이 하위층으로 진행될수록 그레이디언트가 점점 작아지는 경우 (경사 하강법이 하위층의 연결 가중치를 변경되지 않은 채로 둔다면 훈련이 좋은 솔루션으로 수렴되지 않을 것이다.) 그레이디언트 폭주exploding gradient : 그레이디언트가 점점 커져서 여러 층이 비정상적으로 큰 가중치로 갱신되면 알고리즘은 발산diverse 글로럿Glorot과 He 초기화initialization 각 층의 연결 가중치를 밑에 기술한 방식대로 무작위로 초기화 평균이 0이고 분산이 $\sigma^{2}$인 정규분포 또는 $-r$과 $+r$ 사이의 균등분포 $(r=\sqrt{3\sigma^{2}})$ 초기화 전략 활성화 함수 $\sig..
생물학적 뉴런에서 인공 뉴런까지 퍼셉트론perceptron 가장 간단한 인공 신경망 구조 중 하나로 TLUthreshold logic unit 또는 LTUlinear threshold unit라고 불리는 조금 다른 형태의 인공 뉴런을 기반 TLU는 입력의 가중치 합을 계산한 뒤 계산된 합에 계단 함수step function를 적용하여 결과를 출력 (i.e. $h_ {w}(x)=step(z)$, $z=x^{T}w$) 헤비사이드 계단 함수Heaviside step function 퍼셉트론에서 일반적으로 사용하는 계단 함수 (임곗값을 0으로 가정) 부호 함수sign function를 대신 사용하기도 한다. $\text{heaviside}(z)=\begin{cases}0 & z
군집 군집clustering : 비슷한 샘플을 구별해 하나의 클러스터 또는 비슷한 샘플의 그룹으로 할당하는 작업 클러스터cluster : 보편적인 정의는 없다. 상황에 따라 다르고 어떤 모양이든 될 수 있고 종류가 아주 많다. 센트로이드centroid : 클러스터의 특정 포인트 k-평균 각 클러스터의 중심을 찾고 가장 가까운 클러스터에 샘플을 할당 군집에서 각 샘플의 레이블은 알고리즘이 샘플에 할당한 클러스터의 인덱스 k-평균 알고리즘 처음에 센트로이드를 랜덤하게 선정 샘플에 레이블을 할당하고 센트로이드를 업데이트하는 식으로 센트로이드에 변화가 없을 때까지 계속 반복 (일반적으로 이 횟수는 매우 작다.) 센트로이드 초기화 방법 센트로이드 위치를 알 수 있다면 (e.g. 또 다른 군집 알고리즘을 먼저 실행..