Go together

If you want to go fast, go alone. If you want to go far, go together.

핸즈온 머신러닝 2판 12

19장 대규모 텐서플로 모델 훈련과 배포

텐서플로 모델과 나머지 시스템을 분리할 수 있습니다. 텐서플로 서빙 사용하기 tf.keras 모델을 TF 서빙으로 배포할 때 먼저 해야할 일은 모델을 SavedModel 포맷으로 내보내는 것입니다. model_version = '0001' model_name = 'my_mnist_model' model_path = os.path.join(model_name, model_version) # tf.saved_model.save() tf.saved_model.save(model, model_path) tf.saved_model.save() 함수에 모델, 경로를 전달하면 그 경로에 모델의 계산 그래프와 가중치를 저장합니다. model.save(model_path)를 사용할 수도 있습니다. CAUTION_ 더보기..

18장 강화 학습

이 장에서는 심층 강화 학습(deep reinforcement learning)에서 가장 중요한 기술인 정책 그래디언트(policy gradient)와 심층 Q-네트워크(deep-Q-networks, DQN)를 마르코프 결정 과정(Markov decision process, MDP)과 함께 소개합니다. 그 다음 최신 알고리즘을 매우 간단하게 구축할 수 있는 TF-Agents 라이브러리를 알아봅니다. 이 라이브러리를 사용해 유명한 아타리 게임인 브레이크아웃(Breakout)을 플레이하는 에이전트를 훈련합니다. 보상을 최적화하기 위한 학습 강화 학습에서 에이전트(agent)는 관측(observation)을 하고 주어진 환경(environment)에서 행동(action)을 합니다. 그 결과로 보상(reward..

이진 오토인코더를 이용한 해싱

인코더의 출력층을 sigmoid 함수로 해놓고 출력층 바로 뒤에 가우시안 잡음 층을 놓으면, 가우시안 잡음 층 바로 뒤에 있는 층의 출력이 커집니다. 잡음에 입력이 묻히지 않도록 하기 위해서 모델이 그렇게 학습합니다. 아마 이렇게 하면 이미지의 특성을 명확하게 표현하려고 하려나? 인코더의 출력층을 16개의 뉴런으로 하고, 출력값을 0과 1로 반올림하면 16비트의 '시맨틱 해시'를 얻습니다. 모든 것이 잘 수행되면 비슷한 이미지는 같은 해시를 가지게 됩니다. 이는 검색 엔진에 매우 유용합니다. 이미지의 시맨틱 해시에 따라 서버에 이미지를 저장하면 같은 서버에는 모두 비슷한 이미지가 저장될 것이고, 사용자가 탐색할 이미지를 전달하면 검색 엔진이 인코더를 사용해서, 전달된 이미지의 해시를 계산하고 이 해시에 ..

17장 오토인코더와 GAN을 사용한 표현 학습과 생성적 학습

autoencoder는 레이블되지 않은 훈련 데이터에서 잠재 표현(latent representation)을 학습할 수 있습니다. 일반적으로 잠재 표현은 입력보다 훨씬 낮은 차원을 가지므로 차원 축소, 특히 시각화에 유용하게 사용됩니다. 오토인코더는 DNN의 비지도 사전훈련에 사용될 수 있고, 일부 오토인코더는 훈련 데이터와 비슷한 새로운 데이터를 생성할 수 있습니다. 이를 생성 모델(generative model)이라고 합니다. 생성적 적대 신경망(generative adversarial networks, GAN)은 정말 리얼한 사람 얼굴을 생성합니다. (https://thispersondoesnotexist.com/) 침실을 생성한 이미지를 볼 수도 있습니다. (https://thisrentaldoe..

16장 RNN과 어텐션을 사용한 자연어 처리

우선 문장에서 다음 글자를 예측하도록 훈련하는 문자 단위 RNN(character RNN)부터 시작합니다. 새로운 텍스트를 생성하고 그 과정에서 매우 긴 시퀀스를 가진 텐서플로 데이터셋을 만드는 방법을 알아봅니다. 먼저, 상태가 없는 RNN(stateless RNN)을 사용하고 다음에 상태가 있는 RNN(stateful RNN)을 구축하겠습니다. 상태가 없는 RNN은 각 반복에서 무작위로 선택한 텍스트의 일부분으로 학습하고, 상태가 있는 RNN은 훈련 반복 사이에 은닉 상태를 유지하고 중지된 곳에서 이어서 상태를 반영합니다. 그래서 더 긴 패턴을 학습할 수 있습니다. 어텐션 메커니즘은 각 타임 스텝에서 모델이 집중해야 할 입력 부분을 선택하도록 학습하는 신경망 구성 요소입니다. 어텐션만 사용해 매우 좋은..

15장 RNN과 CNN을 사용해 시퀀스 처리하기

RNN을 사용하면 time series, 고정된 길이가 아닌 sequence (문장, 문서, 오디오 ..)를 다룰 수 있습니다. 자동 번역, speech to text 같은 자연어 처리(NLP)에 매우 유용합니다. RNN은 이전 타임 스텝의 출력을 다시 입력으로 받습니다. $$y_{\left(t\right)}=\Phi \left(W_x^Tx_{\left(t\right)}+W_y^Ty_{\left(t-1\right)}+b\right)$$ $$Y_{\left(t\right)}=\Phi \left(\left[X_{\left(t\right)}\ \ \ Y_{\left(t-1\right)}\right]W+b\right)$$ $$W\ =\begin{bmatrix}W_x\\W_y\end{bmatrix}$$ Φ는 활성..

14장 합성곱 신경망을 사용한 컴퓨터 비전

?부분 알아보기, YOLO ~ YOLOv3 논문 읽어보기 이미지 인식 문제에서 완전 심층 연결망이 아닌 CNN을 쓰는 이유는 완전 연결층의 경우 아주 많은 파라미터를 만들기 때문입니다. 예를 들어, 100x100 이미지는 10,000개의 픽셀로 이루어져 있는데, 이를 첫 은닉층의 뉴런 1,000개에 연결하면 10,000,000개의 연결이 만들어지기 때문입니다. CNN은 층을 부분적으로 연결하고 가중치를 공유해 이 문제를 해결합니다. 합성곱 층 CNN은 합성곱(convolution)을 이용합니다. 합성곱은 한 함수가 다른 함수 위를 이동하며 원소별 곱셈의 적분을 계산하는 수학 연산입니다. 합성곱 층에서는 합성곱 연산 중 반전을 제외한 교차 상관(cross-correlation)을 사용합니다. 위 그림의 C..

13장 텐서플로에서 데이터 적재와 전처리하기

모르는 부분: save_to_multiple_csv_files 에서 repr(), np.c_, print(end파라미터), interleave(), interleave 다시 복습 모르는 부분: 메모리 용량보다 큰 규모의 데이터셋으로 딥러닝 시스템을 훈련해야 하는 경우가 많습니다. 텐서플로는 데이터 API를 통해 이를 쉽게 처리할 수 있습니다. 데이터셋 객체를 만들고 데이터 위치와 변환 방법을 지정하면 됩니다. 멀티스레딩, 큐, 배치, 프리페치(prefetch)같은 상세한 사항을 모두 대신 처리해줍니다. 데이터 API는 텍스트 파일(CSV 등), 고정 길이의 이진 파일, 텐서플로의 TFRecord 포맷을 사용하는 이진 파일에서 데이터를 읽을 수 있습니다. 데이터 API는 SQL 데이터베이스에서 읽는 기능을..

12장 텐서플로를 사용한 사용자 정의 모델과 훈련

궁금한점: jacobian() 메서드 알아보기 사용자 정의 훈련 다시 정리하기 궁금한점: 지금까지 텐서플로 고수준 API인 tf.keras만 사용해왔습니다. 이제 텐서플로를 자세히 들여다보고 저수준 파이썬 API를 살펴볼 차례입니다. 자신만의 손실 함수, 지표, 층, 모델, 초기화, 규제, 가중치 규제 등을 만들어 세부적으로 제어하고 싶을 때 필요하기 때문입니다. 텐서플로의 자동 그래프 생성 기능을 사용해 사용자 정의 모델과 훈련 알고리즘의 성능 을 향상할 수 있는 방법도 알아봅니다. 텐서플로 훑어보기 텐서플로는 강력한 수치 계산용 라이브러리입니다. 머신러닝 외에도 계산량이 많이 필요한 어떤 작업에도 사용할 수 있습니다. 텐서플로가 제공하는 기능: GPU 지원 분산 컴퓨팅(여러 장치, 서버에 대해) JI..