반응형

SW/딥러닝 66

46. 딥러닝 : MNIST : 훈련을 위해 데이터를 모델링 하는 방법, 예제

패키지 임포트 import numpy as np import tensorflow as tf import tensorflow_datasets as tfds 기존 처럼 동일하게 패키지 임포트를 진행해줍니다. 해당 내용은 다른 포스팅에서 언급했으므로, 이번 포스팅에서는 따로 언급하지 않겠습니다. 데이터 전처리 mnist_dataset, mnist_info = tfds.load(name='mnist', with_info=True, as_supervised=True) mnist_train, mnist_test = mnist_dataset['train'], mnist_dataset['test'] num_validation_samples = 0.1 * mnist_info.splits['train'].num_examp..

SW/딥러닝 2020.09.12

45. 딥러닝 : MNIST : 훈련을 위해 데이터를 분류하는 방법, 구현

패키지 임포트 import numpy as np import tensorflow as tf import tensorflow_datasets as tfds 필요한 패키지를 임포트 합니다. 임포트 내용은 이전에 했던 포스팅을 참조해주시면 감사하겠습니다. 데이터 전처리 mnist_dataset, mnist_info = tfds.load(name='mnist', with_info=True, as_supervised=True) mnist_train, mnist_test = mnist_dataset['train'], mnist_dataset['test'] num_validation_samples = 0.1 * mnist_info.splits['train'].num_examples num_validation_samp..

SW/딥러닝 2020.09.11

44. 딥러닝 : MNIST 분류 예제, 구현 : 데이터 전처리

패키지 임포트 import numpy as np import tensorflow as tf import tensorflow_datasets as tfds 필요한 패키지를 위와 같이 임포트합니다. 자세한 내용은 이전 포스팅을 참조해주세요. 데이터 전처리 mnist_dataset, mnist_info = tfds.load(name='mnist', with_info=True, as_supervised=True) mnist_train, mnist_test = mnist_dataset['train'], mnist_dataset['test'] num_validation_samples = 0.1 * mnist_info.splits['train'].num_examples num_validation_samples = t..

SW/딥러닝 2020.09.05

43. 딥러닝 : MNIST 분류 예제 : 패키지 임포트, 데이터 준비

MNIST 분류를 위한 심층 신경망 이 섹션에서 얻은 모든 지식을 적용하여 심층 신경망을 작성합니다. 선택한 문제는 딥 러닝의 "Hello World"라고 합니다. 왜냐하면 대부분의 학생들이 처음 보는 딥 러닝 알고리즘이기 때문입니다. 데이터 세트는 MNIST라고 하며 손으로 쓴 숫자 인식을 나타냅니다. Yann LeCun의 웹 사이트 (페이스 북 AI 리서치 이사)에서 더 많은 정보를 찾을 수 있습니다. 그는 이야기 해 왔던 것과 오늘날 널리 사용되는 CNN (covolutional neural network)과 같은 더 복잡한 접근법의 선구자 중 한 명입니다. 데이터 세트는 70,000 개 이미지 (28x28 픽셀)의 손글씨 숫자 (이미지 당 1 자리)를 제공합니다. 목표는 쓰여진 숫자를 감지하는 알..

SW/딥러닝 2020.09.04

42. 딥러닝 : MNIST : 무엇이고 왜 경험해보아야 하는가?

그동아 개념에 대한 포스팅을 하였습니다. 코딩으로 돌아 오기까지는 오랜 시간이 걸렸지만 지금까지의 모든 포스팅은 기본적인 딥러닝을 하기 위해 이해나는데 필요한 영역이라 할 수 있습니다. 앞으로도 꾸준히 복습을 해야할 것 같습니다. 모델링을 시작했을 때 텐서플로우를 도입하여 템플릿을 제공하고 그 안에 넣는 것이 쉬웠을 것입니다. 이제 이론을 알았으므로 전체 과정과 진행되는 모든 것을 진정으로 이해할 수 있습니다. 이번에 선택한 문제는 기계 학습의 핼로우 월드라고 할 수 있습니다. 종종 이것은 학생들이 직면하는 첫 번째 문제 중 하나입니다. Mnist라고 불리는 사면 데이터 세트는 손으로 쓴 숫자의 약 70000 개의 이미지로 구성됩니다. 10 자리 숫자이기 때문입니다. 0부터 9까지 10 개의 클래스가 있..

SW/딥러닝 2020.09.03

41. 딥러닝 : 원핫, 바이너리 인코딩 : 개념, 차이, 장단점, 적용 차이

이진 인코딩을 소개하는 포스팅을 시작하겠습니다. 바이너리 인코딩부터 시작하겠습니다. 빵은 1 번, 요구르트는 2 번, 머핀은 3 번, 2 진수로 지정하면 이 숫자를 바꾼 값을 의미합니다. 이진수 1로 이진수는 01. 그래서 빵은 01이고 2는 10이됩니다 그래서 요구르트는 10이 될 것입니다. 3의 이진수는 11이 될 것입니다. 그래서 머핀은 11이 됩니다. 프로세스의 다음 단계는 다시 나누는 것입니다. 마치 첫 번째 변수에 대해 두 개의 새로운 변수를 만드는 것처럼 서로 다른 열로 표시해야 합니다. 빵은 0, 요구르트는 1, 머핀은 2인 것을 기억해야 합니다. 빵이 3개 있으면 11이 되어 머핀으로 인코딩 되지 않도록 유의해야 합니다. 빵시 3개가 되어 머핀이 될 수 없으므로, 이러한 상관관계를 유의해..

SW/딥러닝 2020.09.02

40. 딥러닝 : Categorical Data (범주형 데이터) : 개념, 필요성, 종류

대부분은 거래량, 가격 등을 거래하는 수치 변수의 예를 알아보았습니다. 짧은 범주형 데이터도 다루어야 합니다. 종종 우리의 고양이 개 예제와 같은 그룹 또는 범주를 참조합니다. 알고리즘은 값이 아닌 숫자만 취하므로 범주형 데이터로 작업 할 때 문제는 범주를 숫자로 변환하는 방법이 필요합니다. 모델 또는 출력에 입력할 수 있어야 합니다. 결국에는 분명히 다른 숫자의 의미가 연관되어야합니다. 각 범주에 의미에 대해 알아보겠습니다. 우리 가게에 빵 요구르트와 머핀 세 가지 제품이 있다고 가정해보겠습니다. 이제 이러한 범주를 숫자로 어떻게 변환 할 수 있을까요? 가능한 해결책은 다음과 같이 열거하는 것입니다. 빵, 요구루트, 머핀은 각 1개, 2개, 3개가 있습니다. 이것은 주문이 있음을 의미합니다. 머핀이 빵..

SW/딥러닝 2020.08.30

39. 딥러닝 : Standardization(정규화) : 개념, 종류, 컨셉

숫자 데이터로 작업 할 때 가장 일반적인 문제는 크기의 차이에 관한 것입니다. 첫 번째 강의에서 언급했듯이 이 문제에 대한 쉬운 해결 방법은 표준화입니다. 이 용어에 다른 용어로 기능 확장 및 정규화가 있습니다. 머신 러닝 내에서도 몇 가지 추가 개념을 참조 할 수 있습니다. 이것이 바로 표준화 및 정규화 또는 기능 확장이라는 용어를 고수하는 이유입니다. 작업중인 데이터를 표준 규모로 변환하는 프로세스입니다. 이 문제에 접근하는 매우 일반적인 방법은 다음과 같습니다. 평균을 빼고 표준 편차로 나누면 데이터 셋에 관계없이 항상 평균이 0 인 분포를 얻을 수 있습니다. 예를 사용하면 알고리즘을 쉽게 증명할 수 있는 1의 표준 편차인 데이터가 있습니다. 입력 변수 유로 달러 환율과 일일 거래량을 3 일 동안의..

SW/딥러닝 2020.08.29

38. 딥러닝 : Basic Preprocessing (기본 전처리) : 개념, 사용, 예시

가장 간단한 전처리 중 하나로 시작합니다. 종종 주식에 관심이 없지만 주가를 전처리할 때 일반적으로 발생하는 상대 가치에 대해 알아보겠습니다. Google을 열고 Apple의 주가를 입력하면 얻을 수 있는 것은 Apple의 주가입니다. 그러나 빨간색 또는 녹색 숫자는 Apple 주가의 상대적인 변화를 의미합니다. 이것은 매우 흔한 전처리의 예입니다. 이러한 상대적 메트릭은 주가와 같은 시계열 데이터로 존재하고 있을 때 특히 유용하다고 생각하지 않습니다. 그러나 곧 금융의 세계에서 이러한 상대적인 변화를 로그로 더 변환 할 수 있습니다. 많은 통계 및 수학적 방법이 로그를 활용하여 머신 러닝에서 더 빠른 계산을 촉진하기 때문에 로그 변환은 일반적이지 않지만 학습 속도를 높일 수 있습니다. 이것은 예시로 제..

SW/딥러닝 2020.08.28

37. 딥러닝 : Preprocessing (전처리) : 개념, 목적

전처리 머신 러닝 알고리즘 생성을 시작할 때 수행해야하는 첫 번째 활동에 관한 것이며, 전처리는 모델을 통해 실행하기 전에 데이터 세트에 적용하는 모든 조작을 의미합니다. 이미 훈련에 적합하게 데이터를 사전 처리했습니다. 텐서플로우 인트로에서 이미 일부 사전 처리를 보았고 수행 한 모든 훈련을 PC 파일로 저장했습니다. Excel 파일 csv 또는 NPC 파일에 저장하는 것은 전처리의 한 유형이지만 이전과 같이 순서를 변경하는 것보다 주로 데이터 변환에 중점을 두고 알아보겠습니다. 전처리의 목적 몇 가지 중요한 사항이 있습니다. 하나는 이전 10 분의 1에서 본 라이브러리와의 호환성 또는 Excel 스프레드 시트 및 데이터 과학이 아닌 텐서플로우에 관한 것입니다. 종종 어떤 형식 으로든 데이터가 제공되며..

SW/딥러닝 2020.08.27

36. 딥러닝 : Adaptive Moment Estimation : 개념, 분석, 개요

지금까지 서로 다른 두 가지 최적화 알고리즘 업데이트 규칙에 새로운 아이디어를 가져 왔음을 알았습니다. 이러한 개념을 결합하고 더 나은 결과를 얻을 수 있다면 더 좋을 것입니다. 가장 유용하다고 생각하는 최적화 알고리즘의 상태에 도달 할 수 있는 rate와 모멘텀은 Adaptive 모멘트 추정이라고하며, 실제로 적용되는 최첨단 최적화 프로그램이며 2014 년 12 월 22 일에 제안된 새로운 기능입니다. 2014년 또는 2015 년에 대학에서 머신 러닝을 공부 한 사람이 있다면 이 방법을 보지 못했을 것입니다. 이는 또한 공부를 마친 후에도 ML 공부가 끝이 없다는 이야기를 뒷받침합니다. 아담 (Adam)은 이번 포스팅의 주제이며 Adaptive Moment Estimation의 줄임말입니다. ADA g..

SW/딥러닝 2020.08.23

35. 딥러닝 : Adaptive Learning Rate Schedules : 개념, 방법, 개요

딥러닝의 다른 것들과 마찬가지로 학습 속도 비율에 대해 더 깊이 파고들어야 합니다. 간단한 규칙을 사용하여 학습 속도를 조정하는 대신, 이 주제에 대한 고급 연구 결과를 사용할 수 있습니다. Ada grad를 사용하면 마술이 평소대로 일어날 것이라고 말할 수 있습니다. 머신 러닝으로 훈련 할 때 최첨단 머신 러닝으로 전체 비디오를 살펴 보는 것이 좋습니다. 모델 훈련을 위한 최상의 방법을 선택할 수 있어야 합니다. 먼저 우리는 Ada grad는 Adaptive Gradient 알고리즘의 약자이며 2011년에 새로 제안되었으므로 각 업데이트 및 모든 가중치에 대해 학습 속도를 동적으로 변경하므로, 원래 규칙은 다른 방식이었습니다. w의 변화는 m과 같습니다. 학습 속도와 W에 대한 손실의 부분 미분 값을 ..

SW/딥러닝 2020.08.22

34. 딥러닝 : 학습률 (learning rate) : 좋은 학습 속도인지 분별하는 방법

학습률에 대해 이야기하지 않고 포스팅을 하는 동안, 위 그림이 매우 중요하지만, 크게 다루지는 않았습니다. 지금까지는 낮은 학습 속도 사례만 살펴보았습니다. 목표에 도달하는 작은 학습 속도를 사용했습니다. 그러나 학습 속도가 높으면 손실을 빠르게 최소화할 수 있지만, 어느정도까지만 도달하고, 진동을 시작하고 손실 값이 멈추게 됩니다. 학습률이 너무 높을수록 손실을 최소화할 수 없으며 비용은 그래프에서 볼 수 있듯이 상향으로 폭발 할 것입니다. 지수 적으로 스케쥴에 따라 정의된 학습률과 같이 잘 선택된 학습률은 낮은 학습률보다 훨씬 빨리 손실을 최소화합니다. 또한 높은 학습 속도보다 더 정확하게 수행 할 수 있습니다. 개발자는 항상 좋은 학습 속도를 목표로 하고 있습니다. 문제는 특정 데이터 모델에 대한 ..

SW/딥러닝 2020.03.28

33. 딥러닝 : 학습률 (learning rate) : 방법, 원리, 설정 팁, 개념

하이퍼 매개 변수의 개념을 소개합니다. 가중치, 바이어스 매개 변수는 알고리즘의 가중치 및 깊이와 숨겨진 유닛의 값과 레이어 값과 같은 것입니다. 알고리즘과 데이터에 가장 적합한 경로를 찾기 위해 하이퍼 매개 변수를 가져야 한다고 언급 했습니다. 최소값으로 크게 진동하지 않고 최소값에 도달하거나 무한대로 분기하지 않고 손실 함수가 완만하게 내려갈 수 있을 정도로 작아야합니다. 또한 최적화가 적당한 시간 내에 이루어 지도록 충분히 커야 했습니다. 하나의 매개 변수에 대해 그라디언트 하강에 제공하는 것으로 학습 속도가 있습니다. 충분히 작거나 충분히 큰 학습률은 너무 모호합니다. 적절한 학습 속도 선택을 다루는 현명한 방법은 소위 학습 속도 스케쥴을 채택하는 것입니다. 학습 속도 스케쥴은 가장 좋은 방법 중..

SW/딥러닝 2020.03.27

32. 딥러닝 : 모멘텀 (Momentum) : 개념, 원리, 필요 이유

주변 값에 얽매이지 않고 최소값에 도달 할 수있는 기회를 개선 할 수 있는 추가 방법을 모색해보겠습니다. 그라디언트 하강 및 확률적 그라디언트 하강은 모델을 훈련시키는 좋은 방법입니다. 그것들을 적용하면서 할 가장 간단한 확장으로 진행해야합니다. 모멘텀 (momentum) 모멘텀이란 무엇입니까? 모멘텀을 설명하는 쉬운 방법은 물리학적 비유를 통한 것입니다. 작은 언덕은 볼이 멈추지 않는 평평한 표면에 도달 할 때까지 롤링을 계속하지 않을 것입니다. 작은 언덕은 지역 최소값이고, 큰 계곡은 전역 최소값입니다. 운동량이 없으면 공은 원하는 최종 목적지에 도달하지 못합니다. 속도가 전혀 떨어지지 않고 작은 언덕에서 멈추었을 것입니다. 지금까지 모멘텀을 고려하지 않았습니다. 즉, 작은 언덕에 빠질 가능성이있는 ..

SW/딥러닝 2020.03.26

31. 딥러닝 : 경사 하강 함정 (gradient descent pitfalls) : 원인, 이유, 배경

포스팅할 내용으로 기다리고 있었고 가장 중요하지만 일찍 포스팅하는 것은 합리적이지 않았습니다. 지금까지 그래디언트 하강과 확률적 그래디언트 하강을 보았습니다. 그라디언트 디센트 알고리즘이 시작하고, 단일 배치 GD를 내림차순으로 시작하는 것은 느리지만 결국 일관된 방식으로 최소값에 도달합니다. SGD는 이전 포스팅에서 말했듯이 여전히 많은 가치를 지니고 있지만 훨씬 더 빠릅니다. 실제 함수는 그렇게 규칙적이지 않습니다. 실제 함수에서는 마지막 함수값이 최소값이 아니라는 것입니다. 최소한 중 하나 일뿐입니다. 최소 손실 지점을 나타냅니다. 각 로컬 최소값은 기계 학습 최적화에 대한 차선책입니다. 그라디언트 디센트는 이 문제에 취약합니다. 종종 글로벌 최소값이 아닌 시작점에서 가장 가까운 최소값에 속할 수 ..

SW/딥러닝 2020.03.25

30. 딥러닝 : 확률적 경사 하강 : 개념, 원리, 장점, 사용 이유

이 섹션에서는 최적화에 대한 섹션으로, 모델 매개 변수에 모두 사용하는 알고리즘을 참조합니다. 지금까지 기울기 하강 만 보았으므로 이제 개선된 알고리즘으로 이어지는 사항에 대해 논의할 때입니다. 대부분 이론적인 관점에서 볼 때 가치가 있지만 실제 실행에서는 느립니다. 따라서 이러한 상황을 극복해야할 단계가 있습니다 . 가중치를 업데이트 하기전에 전체 훈련 세트를 통한 각 업데이트는 변화가 매우 작습니다. 이것은 학습 속도의 작은 값에 의해 구동되는 기울기 하강의 전체 개념 때문입니다. 기억하는 것처럼 위험에 처할 때 너무 높은 값을 사용할 수 없었습니다. 따라서 매우 작은 학습 속도를 사용하여 많은 포인트에 걸쳐 많은 에포크를 가지고 있습니다. 이것은 느립니다. 기본적으로 그라디언트를 항해합니다. SGD..

SW/딥러닝 2020.03.24

29. 딥러닝 : Xavier Initialization (변수 초기화 방법 ) : 개념, 방식, 원리, 적용

이번 포스팅에서는 초기화에 대해 계속 이야기 할 것입니다. 고급 전략으로 Xavierinitialization이라 합니다. Xavierinitialization은 Glorot이라고도 합니다. Glorot 또는 Xavier는 2010년에 이 방법을 제안하고 대규모로 빠르게 채택되었으므로 좋은 기술이라 할 수 있습니다. 처음 배운 방법은 임의로 선택하는 방법이었습니다. 균일하고 일반적인 Xavier 초기화는 모두 기본입니다. 랜덤화에 사용되는 방법은 중요하지 않습니다. 각 레이어의 통과와 함께 다음과 같은 경우 아웃풋 수입니다. 초기화는 일부 범위에서 분산을 유지합니다. 두 가지 공식이 있습니다. Uniform Xavier Initialization입니다. -x, x까지의 무작위 균일 분포에서 각 가중치 W..

SW/딥러닝 2020.03.23

28. 딥러닝 : 단순 초기화의 타입 : 초기화 유형, 방법, 개념, 유념

초기화 문제를 안다는 것을 알고 어떻게 처리 할 수 ​​있는지 살펴보겠습니다. 간단한 접근 방식은 작은 범위 내에서 무작위로 가중치를 초기화하는 것입니다. 최소한의 예에서는 무작위로 균일하게 사용하고 범위는 0과 1 사이였습니다. 1과 0.1에서 무작위로 값을 선택합니다. 그러나 균일한 방식으로 각 방법은 동일한 확률로 선택될 확률이 동일합니다. 두 번째 방법은 정규 이니셜 라이저를 선택하는 것입니다. 기본적으로 아이디어는 동일합니다. 이번에는 평균 0, 정규 분포에서 숫자를 선택합니다. 그러나 분산은 임의적이지만 작아야 합니다. 정규 분포를 따르기 떄문에 예측할 수 있습니다. 0에 더 가까운 값은 다른 값보다 훨씬 더 많이 선택될 수 있습니다. 초기화의 예는 평균이 0인 정규분포를 사용하는 것입니다. ..

SW/딥러닝 2020.03.22

27. 딥러닝 : 오버피팅(과적합) : 훈련 멈추는 시점, 팁, 개념, 종류

오버 피팅과 관련된 세부 사항은 더 자세히 살펴보아야 합니다. 마지막 기능이 최소화 될 때까지 모델을 수십 번 훈련했다고 말했습니다. 계속 할 수 있지만 어느 시점에서 과적합할 것입니다. 학습 프로세스를 중단하는 것에 대한 한두 가지 사례를 살펴보면서, 모델이 학습되었음을 나타내는 추가 규칙을 살펴볼 것입니다. 적절한 용어는 조기 중지입니다. 일반적으로 조기 중지는 과적합을 방지하는 기술입니다. 가장 간단한 방법은 첫 번째 섹션 이후 최소한의 예에서 미리 설정된 수의 에포크 (epoch)를 훈련하는 것입니다. 최소에 도달했거나 학습 속도가 충분히 높아졌다고 보장 할 수 없습니다. 손실이 무한대로 바뀔 수도 있습니다. 훈련을 위해 시도해보아야 합니다. 신기한 실수를 제외하고 실수는 거의 만족스럽지 못하지만..

SW/딥러닝 2020.03.14
반응형