본문 바로가기

AI

(144)
[kaggle] mnist https://frhyme.github.io/machine-learning/kaggle_mnist/ kaggle) mnist 이미지 인식하기 mnist 이미지 분류기 만들기 frhyme.github.io
[keras]훑어보기 - 컴파일(Compile)과 훈련(Training) compile() : 모델을 기계가 이해할 수 있도록 컴파일 합니다. 오차 함수와 최적화 방법, 메트릭 함수를 선택할 수 있습니다. 위 코드는 임베딩층, 은닉층, 출력층을 추가하여 모델을 설계한 후에, 마지막으로 컴파일 하는 과정을 보여줍니다. optimizer : 훈련 과정을 설정하는 옵티마이저를 설정합니다. 'adam'이나 'sgd'와 같이 문자열로 지정할 수도 있습니다. loss : 훈련 과정에서 사용할 손실 함수(loss function)를 설정합니다. metrics : 훈련을 모니터링하기 위한 지표를 선택합니다. 대표적으로 사용되는 손실 함수와 활성화 함수의 조합은 아래와 같습니다. 더 많은 함수는 케라스 공식문서에서 확인 가능합니다. fit() : 모델을 학습합니다. 모델이 오차로부터 매개 변..
[keras] 훑어보기 - 모델링(Modeling) 1. 전처리(Preprocessing) 2. 워드 임베딩(Word Embedding) 3. 모델링(Modeling) 4. 컴파일(Compile)과 훈련(Training) 5. 평가(Evaluation)와 예측(Prediction) 6. 모델의 저장(Save)과 로드(Load) 3. 모델링(Modeling) Dense()는 한번 사용되었지만 더 많은 층을 추가할 수 있습니다. Dense()의 대표적인 인자를 보겠습니다. 첫번째 인자 = 출력 뉴런의 수. input_dim = 입력 뉴런의 수. (입력의 차원) activation = 활성화 함수. - linear : 디폴트 값으로 별도 활성화 함수 없이 입력 뉴런과 가중치의 계산 결과 그대로 출력. Ex) 선형 회귀 - sigmoid : 시그모이드 함수. 이..
numpy.newaxis 와 reshape numpy라는 유명 라이브러리의 newaxis 요 표현은 무엇이냐? 간단히 이야기 해서 존재하는 numpy array의 차원을 늘려준다 보시면 되겠습니다. 첫번째, 1D array를 row vector나 column vector로 사용하고 싶을 경우지요. 아시다시피 numpy에서 array를 만들면 shape이 .. x자리만 4고 y자리는 공란입니다. vector로 보고 indexing을 한다던지 연산을 한다던지 해도 껄끄러운 상태겠네요. 여기에 아래와 같이 장난을 처봅시다. 그러면 아주 간단하게 해결 됩니다. 두번째, numpy broadcasting이라고 shape이 다른 array간 연산을 할때도 유용합니다. 일단 한번 봐야되니까 아래와 같이 모양이 다른 array끼리 덧셈 한번 해봅시다. 세번째,..
[Keras] np_utils.to_categorical(클래스, 클래스의 개수) np_utils.to_categorical(클래스, 클래스의 개수) 함수 정수 숫자를 -> [0,0,1,0,0,0] 처럼 바꿔서 구분하는 것 이런 변환을 '원-핫 인코딩'이라고 한다.
Cross entropy의 이해, 사용 방법(Categorical, Binary, Focal loss) 이 글에서는 여러 가지 클래스를 분류하는 Classification 문제에서, Cross entropy를 사용하는 방법와 원리를 알아봅니다. 1. Tasks 우선, 두가지 문제를 봅시다. 1-1) Multi-Class Classfication 각 샘플(이미지)은 클래스 C 중 하나로 분류될 수 있습니다. 해는 0번, 즉 [1 0 0] (원핫인코딩), 달은 1번, [0 1 0], 구름은 2번, [0 0 1] 으로 분류될 수 있다는 말입니다. CNN은 s(scores) 벡터를 출력하고, one hot 벡터인 타겟(ground truth) 벡터 t와 매칭이 되어 loss값을 계산할 것입니다. 즉, Multi-Class Classification은 여러 샘플(이미지)에서 C개의 클래스 중 하나의 클래스로 분류하..
[Keras] Dense, Fully connected Layer 누구나 이해할 수 있는 딥러닝 - cs231n 5강 (Convolutional Neural Networks, CNN) - cs231n 5강의 내용을 정리한 글입니다. - 최대한 쉽게, cs231n 강의를 스스로 다시 이해하며, 처음 딥러닝을 공부하는 사람들도 쉽게 이해할 수 있게 정리해보았습니다. - 저도 초보인지라 틀리는 cding.tistory.com 신경망 신경망은 위의 그림에서 input -> activation function -> output 연산이 되고 output이 새로운 input이 되는거라고 생각하면 됩니다. 신경망의 기본 함수 형태는 아래와 같습니다. y = f(Wx+b) f() : 활성화 함수 W : 가중치 x : input data y : output data 기본신경망 만들기 t..
[Keras] Sequential model 시작하기 1. 케라스 Sequential 모델 시작하기 2. 입력 형태 지정하기 3. 컴파일 4. 학습 1. 케라스 Sequential 모델 시작하기 2. 입력 형태 지정하기 만들어진 모델은 입력 형태에 대한 정보를 필요로 합니다. 때문에 Sequential 모델의 첫 번째 레이어는 입력 형태에 대한 정보를 받습니다. 두 번째 이후 레이어들은 자동으로 형태를 추정할 수 있기 때문에 형태 정보를 갖고 있을 필요는 없습니다. 형태 정보를 전달하기 위한 방법은 다음과 같습니다. 정수형 또는 None으로 구성된 형태 튜플(shape tuple)의 input_shape 인자를 첫번째 레이어에 전달합니다. 여기서 None은 음이 아닌 어떠한 정수를 받을 수 있음을 의미합니다. 참고로 input_shape에는 배치 차원은(b..
Tensorflow vs Keras / 딥러닝 프레임워크 keras와 tensorflow 차이점 ​ keras는 using tensorflow backend 라고 한다. 케라스는 텐서플로우를 백엔드로 사용하고 있다. keras는 tensorflow보다 사용자 입장에서 친말한 프레임워크이다. keras의 내부 모듈는 tensorflow를 기반으로 사용할 수 있다. ​ keras VS tensorflow는 사과 VS 바나나의 관계가 아니다. ​
Tensorflow vs Keras
[Keras] set_image_dim_ordering Versions: Keras - 2.3.1 TensorFlow - 1.14
[CNN] lenet-5 LeNet은 CNN을 처음으로 개발한 얀 르쿤(Yann Lecun) 연구팀이 1998년에 개발한 CNN 알고리즘의 이름이다. original 논문 제목은 "Gradient-based learning applied to document recognition"이다. 우선 LeNet-5의 구조를 살펴보자. 그림1에서 볼 수 있듯이 LeNet-5는 인풋, 3개의 컨볼루션 레이어(C1, C3, C5), 2개의 서브샘플링 레이어(S2, S4), 1층의 full-connected 레이어(F6), 아웃풋 레이어로 구성되어 있다. 참고로 C1부터 F6까지 활성화 함수로 tanh을 사용한다. [CNN 알고리즘들] LeNet-5의 구조 LeNet-5 => https://bskyvision.com/418 AlexNet => ..
ImageNet Alexnet Resnet VGG Lenet GoogLenet YOLO
[CNN] Batch Normalization [Part Ⅵ. CNN 핵심 요소 기술] 1. Batch Normalization [1] - 라온피플 머신러닝 아카데미 - Part I. Machine Learning Part V. Best CNN Architecture Part VII. Semantic ... blog.naver.com Batch Normalization은 기본적으로 Gradient Vanishing / Gradient Exploding 이 일어나지 않도록 하는 아이디어 중의 하나이다. 지금까지는 이 문제를 Activation 함수의 변화 (ReLU 등), Careful Initialization, small learning rate 등으로 해결하였지만, 이 논문에서는 이러한 간접적인 방법보다는 training 하는 과정 자체를 전체적..
[ML] 오차(error)와 잔차(residual)의 차이 만약 모집단에서 회귀식을 얻었다면, 그 회귀식을 통해 얻은 예측값과 실제 관측값의 차이가 오차이다. 반면 표본집단에서 회귀식을 얻었다면, 그 회귀식을 통해 얻은 예측값과 실제 관측값의 차이가 잔차이다. 둘의 차이는 모집단에서 얻은 것이냐 표본집단에서 얻은 것이냐 뿐이다. 사실상 우리는 대부분 표본집단에서 회귀식을 얻기 때문에, 잔차를 가지고 회귀식의 최적의 파라미터 값들을 추정한다. 즉, 잔차들의 제곱들을 더한 것(잔차제곱합)을 최소로 만들어주는 파라미터를 찾는 것이다. 이것이 바로 최소제곱법(least squares method)이다. 최소제곱법은 최소자승법과 동의어다. ▶ 최소자승법(least square method)이란? 이제 투영이라는 개념과 최소자승법과 어떻게 연관되어 있는지 알아볼 시간이다...
[ML] ResNet 2 ResNet의 저자들은 컨볼루션 층들과 fully-connected 층들로 20 층의 네트워크와 56층의 네트워크를 각각 만든 다음에 성능을 테스트해보았다. 위 그래프들을 보면 오히려 더 깊은 구조를 갖는 56층의 네트워크가 20층의 네트워크보다 더 나쁜 성능을 보임을 알 수 있다. 기존의 방식으로는 망을 무조건 깊게 한다고 능사가 아니라는 것을 확인한 것이다. 뭔가 새로운 방법이 있어야 망을 깊게 만드는 효과를 볼 수 있다는 것을 ResNet의 저자들은 깨달았다. Residual Block 그것이 바로 ResNet의 핵심인 Residual Block의 출현을 가능케 했다. 아래 그림에서 오른쪽이 Residual Block을 나타낸다. 기존의 망과 차이가 있다면 입력값을 출력값에 더해줄 수 있도록 지름길..
[ML] ResNet 1 Shortcut Connection 단순히 더하는 add입니다. 레이어간의 연결이 순서대로 연속적인 것만 있는 것이 아니라, 중간을 뛰어넘어 전달하는(더하는) shortcut이 추가된 것입니다. 연산은 매우 간단하고, 개념도 매우 간단하지만 이것이 그래디언트를 직접적으로 잘 전달하여 gradient vanishing/exploding 문제를 해결하는 큰 효과를 불러일으키게 됩니다. low-level vision과 computer graphics 분야에서 Partial Differential Equations(PDEs)를 풀기 위해 Multigrid 방법들이 많이 사용됩니다. 이것은 다양한 스케일(크기)에서의 하위문제로 시스템을 재정의하는 것입니다. 쉽게 설명하면, 코카콜라 캔을 학습한다고 하였을 때, 코..
Quantization Quantization - Neural Network Distiller Quantization Quantization refers to the process of reducing the number of bits that represent a number. In the context of deep learning, the predominant numerical format used for research and for deployment has so far been 32-bit floating point, or FP32. H nervanasystems.github.io 텐서플로우에서의 양자화 (Quantize) 시키는 방법 [이글은 https://www.tensorflow.org/performance/q..
[ML] Supervised/Unsupervised learning classification logistic - softmax(multi variable) - sigmoid(binary variable ) regression linear(binary, multi variable)
[ML] Activation function 활성(화)함수란 입력을 받아 활성, 비활성을 결정하는데 사용되는 함수이다. 문제의 결과가 직선을 따르는 경향이 있다면 선형함수를 주로 이용한다. 2개를 분류하는 문제일 때는 Vanishing Gradient Problem때문에 sigmoid는 잘 사용하지 않고 ReLU와 그 변형된 활성화함수를 주로 이용한다. 3개 이상을 분류할 때 주로 Softmax와 그 변형된 활성화함수를 주로 이용한다. sigmoid 함수(2개 이하의 class)의 일반화 -> softmax (3개 class 이상일 때) we can consider the softmax function as a generalization of the sigmoid function that allows us to classify more than t..
[ML] CNN(Convolutional Neural Network) deep learning -> cnn CNN 관련 내용 기계 학습(Machine Learning, 머신 러닝)은 즐겁다! Part 3 딥러닝(Deep Learning)과 컨볼루션 신경망(Convolutional Neural Network 또는 CNN) medium.com [CS231n] 강의노트 : CNN (Convolutional Neural Networks) 목표 taeu.github.io A Comprehensive Introduction to Different Types of Convolutions in Deep Learning Towards intuitive understanding of convolutions through visualizations towardsdatascience.com 일..
[ML] Backpropagation backpropagation did not work well for neural nets with many layers. 미분이 의미하는 바? 영향을 미치는 정도 w 값이 1만큼 올라가면 5배 영향을 미친다. 2 * 5 / 3 * 5 [Deep Learning이란 무엇인가?] Backpropagation, 역전파 알아보기 이번 포스팅에서는 저번 포스팅에 이어 에 대해서 알아보려고 한다. 앞서 설명했듯, 이 알고리즘으로 인해 에서의 학습이 가능하다는 것이 알려져, 암흑기에 있던 학계가 다시 관심을 받게 되었 evan-moon.github.io Machine learning 스터디 (18) Neural Network Introduction - README 들어가며 최근 Machine Learning 분야에서..
[ML] Machine Learning training 1. 머신러닝 training forward되는 모델 하지만 이것은 정제된 데이터만을 학습할 수 있다. 딥러닝은 이러한 과정을 데이터에 상관없이 할 수 있다.(cnn) forward는 wx+b 아래는 마지막 단계인 activation 단계이다. 1) linear regression 2) logistic classification(regression) 결과값이 0과 1일 경우 linear regression이 맞지 않는다. 예측(linear regression, logistic classification 사용)을 했으면 cost를 구하고 이를 minimize해줘야 한다. training 과정 forward(wx+b) ->activation(regression, classification) -> comput..
[ML] AI, Machine Learning, Deep Learning 머신 러닝이란? 인공지능의 하위 집한 개념인 머신러닝은 정확한 결정을 내리기 위해 제공된 데이터를 통하여 스스로 학습할 수 있습니다. 처리될 정보에 대해 더 많이 배울 수 있도록 많은 양의 데이터를 제공해야 합니다. 즉, 빅데이터를 통한 학습 방법으로 머신러닝을 이용할 수 있습니다. 머신 러닝은 기본적으로 알고리즘을 이용해 데이터를 분석하고, 분석을 통해 학습하며, 학습한 내용을 기반으로 판단이나 예측을 합니다. 따라서 궁극적으로는 의사 결정 기준에 대한 구체적인 지침을 소프트웨어에 직접 코딩해 넣는 것이 아닌, 대량의 데이터와 알고리즘을 통해 컴퓨터 그 자체를 ‘학습’시켜 작업 수행 방법을 익히는 것을 목표로 한답니다. 딥 러닝이란? 딥 러닝은 인공신경망에서 발전한 형태의 인공 지능으로, 뇌의 뉴런과 ..