Medium - Build Your First Neural-Network with Keras
in Trend
Trend 파악을 Medium 기고문 요약 포스팅 - Keras로 첫 뉴럴 네트워크를 구성해 보세요
What is Keras?
케라스는 딥러닝 프레임워크로 텐서플로우와 같은 백엔드 프레임워크에 위치하고 있습니다.
Why use Keras?
케라스는 여러분에게 다른 뉴럴 네트워크들을 실험하는데 매우 빠른 속도를 제공하기 때문에 좋습니다. 텐서플로으와 같은 다른 프레임워크 보다 더욱 우수하며 경험많은 데이터 과학자나 초보 데이터 과학자 모두에게 적합합니다. 실행하는데 거의 코드가 필요 없습니다.
케라스는 여러분에게 모든 유형의 구조를 만드는데 유연성을 제공합니다. recurrent 구조 뉴럴 네트워크나 convolutional 뉴럴 네트워크, 간단한 뉴럴 네트워크, 딥 뉴럴 네트워크 등등
What’s the difference?
여러분은 텐서플로우와 케라스의 차이점이 뭔지 궁금해 하실 수도 있습니다. 확실히 해봅시다! 케라스는 사실 텐서플로우 내로 통합됩니다. 텐서 플로우의 백엔드 지점을 랩핑합니다. (기술적으로 케라스를 다양한 백엔드 방면에서 사용할 수 있습니다.) 이것은 텐서플로우 내에서 케라스를 콜 할 수 있다는 것ㅇ립니다. 케라스의 단순성을 사용하면서 텐서플로우의 백엔드를 사용할 수 있습니다.
What problems do neural nets work best with?
Feature Extraction
뉴럴 네트워크와 기존의 머신러닝의 차이점은 무엇일까요? 특징 추출입니다! 전통적으로 누구든간에 머신러닝 모델을 쓰는 것은 특징 추출과 연관된 모든 작업을 수행하는 것입니다. 뉴럴 네트워크의 차이점은 특징 추출 단계에서 여러분에게 도움이 된다는 것이죠.
Unstructured data
표로 되어있지 않으며 비구조적인 형태의 다룰 때 입니다; 소리, 영상 등. 이런 데이터를 가지고 특징을 뽑아 내는 것은 매우 어렵죠. 여러분의 뉴럴 네트워크는 비구조적 데이터를 가지고 특징을 추출하는데 효과적입니다.
When you don’t need interpretation
뉴럴 네트워크에서는 여러분의 모델 결과에 대한 시각정보가 그렇게 많지 않습니다. 뉴럴 네트워크의 응용프로그램에 의지한다면 괜찮을 수 있지만 이것은 꽤 까다롭죠. 만약 여러분이 정확하게 말의 이미지를 정의할 수 있다면 대단합니다. 여러분이 해낸겁니다. 여러분의 뉴럴 네트워크가 어떻게 해결했는지 알 필요가 없습니다. 반면 다른 문제들은 모델의 값이 키가 될 수 있습니다.
What does a neural network look like?
여러분의 기본적인 뉴럴 네트워크는 다음과 같은 세 개의 레이어로 구성될겁니다. 여러분의 학습 데이터로 구성된 입력 레이어, 가중치를 처리하는 부분인 숨겨진 레이어, 그리고 예측값이 전달되는 출력 레이어 입니다.
Weight tuning
뉴럴 네트워크의 숨겨진 레이어에서는 가중치가 적용됩니다. 여기에는 뉴럴 네트워크의 가중치 최적화를 도와주기 위해 사용하는 중요한 것들이 여러개 있습니다. 이런 것 중하나는 가중치를 결정하는 활성화 홤수입니다. 활성화 함수는 뉴럴 네트워크가 데이터 속에서 복잡한 비선형 패턴을 구분하는데 도움이 됩니다. 여러분은 아마 sigmoid, tanh, relu, softmax를 사용할 겁니다.
Get your hands dirty!
케라스에서 요구하는 패키지들을 포함하고 싶을 것입니다. Sequntial은 모델을 초기화 하고 기본, 숨김, 출력 레이어 들을 추가할 수 있도록 해줍니다. 게다가 model.add는 우리가 각 레이어들을 딥러닝 네트워크에 어떻게 추가할 것인지 설정할 수 있습니다.
# load libraries
from keras.models import Sequential
from keras.layers import Dense
# instantiate model
model = Sequential()
# here you can add your hidden layer
model.add(Dense(4, input_shape=(2,), activation="relu"))
# one neuron output!
model.add(Dense(1))
model.summary()
Conclusion
여기까지 왔다면 첫 뉴럴 네트워크를 성공적으로 구성하신 겁니다. 케라스에 대한 짧은 인트로가 여러분에게 도움이 되었으면 좋겠네요!
Summary
- 텐서플로우 백엔드에서 동작하는 케라스 프레임워크에 대한 소개,
- 뉴럴 네트워크에 레이어를 추가하는 백엔드 단의 작업을 수행하며 텐서플로우에 통합되어 수행됨.
- 텐서플로우의 백엔드 기능을 사용하면서 선택적으로 케라스를 사용 가능함
- 다른 뉴럴 네트워크 프레임워크 보다 빠른 속도가 특징