Wednesday, July 8, 2015

컨볼루션 뉴럴 넷 Convolutional Neural Network 자세한 설명

키워드: 딥러닝, 컨볼루션 넷, 컨브넷, cnn, convnet, convolutional neural network, deep learning
참고자료: keras

keras의 예제 파일 중 cifar10.py에 구현된 간단한 컨브넷을 설명드리겠습니다.
우선 이 작업은 손으로 쓴 숫자 0~9를 구분하는 것을 목적으로 합니다. 즉 Hand-written digit recognition task입니다.

모델 부분 코드만 보면 아래와 같습니다.

model = Sequential()
model.add(Convolution2D(32, 3, 3, 3, border_mode='full'))model.add(Activation('relu'))model.add(Convolution2D(32, 32, 3, 3))
model.add(Activation(
'relu'))
model.add(MaxPooling2D(poolsize=(
2, 2)))
model.add(Dropout(
0.25))
model.add(Convolution2D(
64, 32, 3, 3, border_mode='full'))
model.add(Activation(
'relu'))
model.add(Convolution2D(
64, 64, 3, 3))
model.add(Activation(
'relu'))
model.add(MaxPooling2D(poolsize=(
2, 2)))
model.add(Dropout(
0.25))
#------절취선--------
model.add(Flatten())
model.add(Dense(
64*8*8, 256))
model.add(Activation(
'relu'))
model.add(Dropout(0.5))
model.add(Dense(256, 10))
model.add(Activation('softmax'))
sgd = SGD(lr=0.1, decay=1e-6, momentum=0.9, nesterov=True)
model.compile(loss='categorical_crossentropy', optimizer=sgd)

  • 전체 구조
전체 구조를 간단히 설명하면 이렇습니다. ReLU와 드롭아웃은 설명에서 빼겠습니다.
모든 convolutional layer에서 이미지 패치는 3x3입니다.
맥스풀링도 없다고 가정하면 전체 과정은,

- 이미지 파일 로딩 (크기:  32x32, RGB채널)
- 3-32 convolutional layer
- 32-32 conv layer
- 32-64 conv layer
- 64-64 conv layer
- flatten (벡터 형태로 reshape)
- (64*8*8) - 256 fully connected layer
- 256 - 10 fully connected layer
- softmax + making decision
입니다.


  • 파라미터 설명 ---절취선 이전---
model.add(Convolution2D(32, 3, 3, 3, border_mode='full'))
(32, 3, 3, 3, border_mode='full')
- border_mode: full, valid가 있고 그 중간격인 same도 매트랩에선 지원합니다. 자세한 설명 생략. 컨볼루션 할때 이미지 끄트머리; 가장자리를 어떻게 처리할지 하는 내용입니다.
- (32, 3, 3, 3)에서 ...
- - 뒤의 3,3은 이미지 패치 사이즈입니다. 즉 (3, 3) 크기의 패치가 이미지를 쭉 훑고 다니게 됩니다.
- - 앞의 (32, 3)은, 3개 채널의 이미지 stack을 32개의 이미지 stack으로 만들어주겠다는 이야기입니다. 즉, 이 부분에서는 총 32개의 피쳐를 추출하게 됩니다. 그 추출은 (3x3)의 이미지 패치의 값 (=9개의 계수, weight parameter)를 learning하여 사용합니다. 따라서 이 과정을 거치면 32x32의 이미지(의 피쳐)가 32개가 쌓이게 됩니다. 
- - 같은걸 (32, 32)로 또 해줍니다.
- - 이번엔 (32, 64)로 또 해줍니다.
- - 마지막으로 (64, 64)로 또 해줍니다. 이런 과정을 거쳐서 이미지는 Low-level feature (직선, 곡선 등의 단순한 피쳐)에서 high-level feature (눈 모양이 있는지, 얼굴 모양이 있는지 등등..)로 변환됩니다.

"그런데말입니다,"
중간에 Max-Pooling이 두 번 있었죠. 그래서 이미지의 크기는 (32x32)가 아니라 (8x8)이 됩니다.

여기까지를 feature learning이라고 생각할 수 있습니다. 

  • 파라미터 설명 ---절취선 이후---
여기서부터는 classification에 가까운 단계입니다.
앞서 convolutional layer를 여러 단계 거친 결과 8x8 이미지가 총 64개가 쌓여있게 됩니다. 즉 전체 데이타 포인트는 64*8*8=4096개가 됩니다.

Dense(64*8*8, 512) 에서는 입력 4096개, 출력 512개의 fully-connected 레이어를 추가합니다.
Dense(512, 10)는 입력 512개, 출력 10개의 레이어를 추가합니다.
여기서 출력 유닛 10개는 각각 0~9의 숫자를 나타냅니다.
그 뒤엔 softmax로 최종 결과가 나옵니다.


  • 그림으로 이해하기


  • 파라미터 개수
패치 사이즈는 9 (3x3)
스택 사이즈는 (3-32) - (32-32) - (32-64) - (64-64) - now fully connected - ( 64*8*8 - 512) - (512 - 10 )
따라서 각각 단계에서 파라미터 개수는 입력 채널 개수 * 출력 채널 개수 * 이미지 패치 크기 가 됩니다. 숫자로 쓰면,
#parameters: 3*32*9 + 32*32*9 + 32*64*9 + 64*64*9 + (64*8*8*)*512 + 512*10

= 288 + 288 + 576 + 576 + 2097152 + 5120

이 된다. 

해당 코드에서 데이타는 트레이닝에 45000개를 불러오고, 회전해서 x20, 좌우 뒤집어서 x2 등의 데이타 뻥튀기 과정을 거치면 대략 200만개가 된다. 시스템의 파라미터 개수와 데이타 개수를 참고 바람.

------

정리할 겸 작성한 내용이니 틀린 부분이 있다면 알려주세요!



Tuesday, June 30, 2015

리뷰 - 애플 뮤직 전격 해부



2015년 6월 30일, 드디어 애플이 스트리밍 서비스 애플 뮤직을 내놓았다. 앱등이 겸 음악추천 알고리즘 연구자(워너비)에겐 이만한 뉴스가 없다. 자, 봅시다!

왜 애플 뮤직을 런칭해야 했는가?는 제끼고, 바로 스샷과 함께 설명..전에 간단한 안내.

  • 감상 포인트
    • 추천 알고리즘이 어떤가?
    • UI는 어떤가?
    • 사람이 추천하는 큐레이션과 자동 추천 알고리즘이 어떻게 섞여있고 어떻게 보여지나?
    • Connect는 얼마나 아티스트들에게 좋은 플랫폼일까? 마이스페이스의 역할을 해줄 수 있을까?
    • Spotify! 등 스트리밍 서비스 사용자가 애플뮤직으로 넘어가야할 이유가 있나?
    • iTunes Match를 쓰고있는 나는 어떻게 되는건가?
    • 애플 뮤직을 쓰면서도 음원을 '구매'하게될 이유가 있을까?


  • 미리 보는 결론
    • 엄청 특별한 기능은 없다.
      • 예: Spotify는 조깅 템포에 맞춰 곡을 골라주는 기능이 있다. 학계에서는 이미 예전에 나온 컨셉이긴 하지만 시장에선 새로운거라 기사가 많이 나왔다. 그렇지만 실제로 그 기능이 스포티파이를 쓰는 이유가 되는 사람이 몇이나 있겠는가. 
    • 따라서 사람들은 엄청 쓸 것이다. 시장 진입은 늦었지만 어차피 iOS(+맥) 플랫폼도 잡고있고 보유 음원도 조금 유리하다. (그리고 많이 유리해질 수 있다. 이미 테일러스위프트를 보유. 만일 비틀즈가 나온다면?)
    • 대체 한국엔 언제 들어오냐. 
      • 미국계정이 정답. 
    • 이 많은 기능 (비츠 뮤직 + 기존 음악앱 + 추가 기능)을 한 앱에 넣었다니 ㅜㅜ 



  • 업데이트 내용
iOS8.4로 업데이트 하면 애플 뮤직이 설치된다. 맥 사용자는 OS X 10.10.4로 업데이트를 하면 데스크탑용 아이튠즈가 업데이트 된다.


다소 밋밋한 하얀 바탕의 아이콘. (간접광고: VR토익, 스카이스터디)

런칭화면을 보는순간 나도 모르게 스샷을... 야! 이 앱등아!

  • 초기 설정


우선 선호 장르를 고른다. 선호는 무관심 - 좋아요 - 좋아요 ㅠㅠ 의 3단계;로 이루어져있다. 추천 알고리즘에서 평가를 몇 단계로 받을 것인가 (페북:1단계, 영화 리뷰: 5단계, 기존 아이튠즈의 곡 평가:별 6단계 (0-5) 등..)가 중요한 요소인데, 단계가 많다고 무조건 정확한 것은 아니지만 3단계면 상당히 단순한 편. 사용자 입장에선 그렇게 신나는 과정이 아니므로 타협을 3단계에서 본 것 같다. (어차피 사용자의 사용 내역이 쌓이면 더 세분화가 가능하므로 절대적인 요소는 아니다.)
늘 그렇듯 신나는 UI.





그 뒤엔 장르 별 아티스트가 둥둥 나온다. 적당히 골라주면 끝.

  • 첫 인상



첫 화면. 기존과 같이 탭바로 이루어져 있고 햄버거 UI따위 사용하지 않았다.
기존 음악 앱의 경우 메뉴가 5개가 넘어서 (라디오 - 아티스트 - 앨범 - 곡 - 플레이리스트 - 장르 - 지니어스 - 컴필레이션 - 작곡자) 4개만 표시되고 나머지는 (...) 으로 나왔는데, 과감하게 줄였다. 자세한건 My Music 탭에서 다룸.

포스팅이 좀 긴데, 탭1/2/3/4/5로 나누어져있습니다. 보다가 이게 뭔가 싶으면 스샷을 참고하세요. 몇 번째 탭의 스샷인지 보시면 여기가 어딘지 대충 알 수 있습니다.

  • 탭 1: For You (추천 음악) (스샷이 영어와 한국어가 섞여있습니다. 양해 바랍니다.)
탭 1은 추천 음악 - 각종 앨범과 재생 목록을 추천해주는 화면이다. 처음에 입력한 장르와 아티스트의 선호에 따라 추천을 한다.



추천 음악 탭의 최상단 화면. 애플 뮤직이 추천하는 플레이리스트 (재생목록). 


그 아래에는 앨범 추천이 있다. 




우선, 추천 재생목록을 누른 화면. 재생 목록에 대한 설명이 나온다. 이 부분은 편집자가 직접 고른 것으로 보인다. 그야말로 Editor's curation. 
(*한글 버전에서도 제목은 영어로 (Indie Campfire)로 나오고 탭 하면 나오는 설명도 영어로 나온다. )
    • + 버튼: '나의 음악' - 재생 목록에 이 재생목록을 추가한다
    • ♥ 버튼: '좋아요' 버튼이다. 눌러도 당장 바뀌는 것은 아무것도 없다. '좋아요' 내역을자동 추천 알고리즘에서 사용하기 위해 만든 버튼으로 보인다.
    • 내보내기 버튼: 이걸 누른 화면은 바로 아래 '앨범'에서 보시면 됩니다.
    • ... 버튼: 이걸 누르면? 



어디서 많이 보던 메뉴다. 데스크탑용 아이튠즈에서 제공하던 'Play Next', 'Add to Up Next' 가 생겼다. 아이팟엔 있었는데 아이폰에서 사라졌던 기능. 
Add To My Music (나의 음악에 추가)는 +버튼과 중복.
Make Available Offline (오프라인에서 사용하기)를 누르면 플레이리스트의 곡이 기기에 다운받아진다. 
Share Playlist... (재생목록 공유)는 내보내기 버튼과 같은 기능이다. 



이번엔 다시 메인화면으로 가서 재생 목록이 아닌 앨범을 눌러보자.



큰 차이는 없고, ... 을 누르면 나오는 메뉴가 조금 더 다양하다.
    • 스테이션 시작: 해당 곡을 주제로 하는 라디오 스테이션을 시작한다. 기존 애플 라디오와 같이 그 곡과 비슷한 라디오가 나온다. 



    • 내보내기 버튼을 누른 화면. 기존에도 있던 화면이고 여기서 메시지/메일/트위터/페이스북 등을 누르면 팝업이 떠서 바로 포스팅을 할 수 있다. 어떤게 포스팅이 되냐하면.. 이따가 알랴줌. 



그 아래로 다시 재생목록과 앨범이 섞여서 나온다. 





  • 탭 2: New (새로운 음악)
New (새로운 음악) 탭을 열자 테일러 스위프트가 나를 맞이한다. 아직도 테일러 스위프트가 차트 1등인가? 아니면 우쮸쮸 해주는건가;
이 탭은 새로운 음악이 뭐가 있나 탐색하는 탭이다. 기본적으로 탭 1에 비해 적극적으로 음악을 찾으려는 의지가 있는 사람들을 위한 탭이다. 즉 귀찮은 사람들은 탭1 추천음악, 그거보다 조금 손가락을 움직일 의지가 있으면 탭2. 


스와이프하면 테일러 스위프트, 롤링스톤즈, 뮤즈 등의 아티스트가 차례대로 뜬다. 근데 그 와중에 닥터드레가 나온다. 너무하잖아...

장르를 바꿔보자. 


재즈로 장르를 바꾸면 편집자가 고른 최신 재즈 곡의 목록이 나를 꼬신다. 그 외에도 이런저런 아티스트를 소개. 

함 눌러봤다. 앨범 내용 소개. 


메인으로 돌아가서 화면을 더 내리면 조금 뻔한, Top Songs가 나온다.





여기가 좀 흥미로운 대목.

    • 애플 뮤직 에디터>
    • 액티비티>
    • 큐레이터>

는 과연 무엇인가.
결론부터 말하면 이 부분은 편집자가 직접 고른 재생목록을 소개하는 내용이다. 이런저런 이유로 추천 알고리즘을 쓰지 않은 것으로 보임. 이런저런 이유는 귀찮아서 생략.

애플 뮤직 에디터>를 누르면 장르별로 목록이 뜬다. 



장르를 하나 고르면 해당 장르의 피쳐드/재생목록/커넥트 메뉴가 나온다. 뭐가 이것저것많지만 사실 별 건 없다. 일단 이 화면 하나 보려고 여기까지 들어올만한 이유가 있는지 의문. 

피쳐드 화면


 재생목록

커넥트.





 이번엔 재즈를 눌러봤다. 그런데 <새로운 음악> 탭의 최상단에서 재즈 장르를 고른것과 같은 구성이 피쳐드에 뜬다.




이번엔 액티비티>를 눌러보자. 


이 외에도 dancing, driving, entertaining, feeling blue, getting it on, getting ready to go out, kicking back, partying, romancing, running, studying, vacationing, waking up, working, working out -의 다양한 활동이 뜬다. 뜨는건 좋은데..
이거 할려고 여기까지 와야되나 하는 생각이 든다. 물론 자주 하는 활동은 저장해놓으면 '내 음악' 탭에서 바로 볼 수 있긴 하다. 그리고 Working, cooking 등으로 검색해도 뜬다. 그렇지만 어.. 이쯤되니 이거 기능이 너무 많은 것 아닌가 하는 생각이..
물론 연예인 걱정과 더불어 가장 쓸데없는 걱정인 애플 걱정따위 하지 말고 넘어가자. 

장르 이름과 요리 관련 단어를 조합하기 위한 각고의 노력을 엿볼 수 있다.

이제 큐레이터> 탭을 보자.
이 부분은 각종 잡지에서 추천해주는 가장 전통적인 방식의 추천 목록이다. NME, Rolling Stone 부터 Shazam까지. 처음에 아티스트가 직접 추천하는 내용인 줄 알았는데 자세히 보니 아닌듯. 





탭 2 소개를 마친다.


  • 탭 3: Radio (라디오)
라디오 탭은 기존의 비츠 뮤직 앱과 아이튠즈 라디오가 합쳐진 역할을 한다.


첫 화면 메인은 비츠 라디오가 장식. BBC에서 영입한 유명(하다는) DJ Zane Lowe 등이 참여. 
전통적인 라디오 시청자를 놓치지 않겠다는 작전이다. 

그리고 별 기대없이 스케줄을 눌러봤더니.. (애플뮤직 텀블러 사이트로 연결됨)


전문 DJ 외에도 유명 아티스트가 직접 라디오를 진행!(한다는 거겠지?)



메인화면에서 아래로 내리면 피쳐드 라디오 스테이션이 소개됨. 


NPR, ESPN도 있다.

그 아래는 장르별 라디오 스테이션이 매우 심플(초라)하게 소개되며 라디오 탭 소개는 끝. 





  • 탭 4: Connect
Connect는 출시 전부터 굉장히 기대하던 기능이다. 아티스트의 홍보 수단으로 잘 사용되다가 망한 마이스페이스의 역할을 다시 해주지 않을까 하는 기대를 했었다. 초반이라 그런지 몰라도 지금은 컨텐츠가 부족해보인다. 어떤 역할을 하게 될지는 지켜봐야. 






런던 심포니 오케스트라 채널도 있다. 눌러보자. 출시 첫날이지만 이미 사람들이 댓글을 달고 놀고있다.



페북을 통한 홍보와 어떤 차이가 있을지 의문. 이 채널을 통해 추가 금액을 받고 음원을 팔아야 할 것 같은데... 





몇 가지 눌러본 결과 커넥트는 동영상 컨텐츠로 이루어져 있고, 아티스트와 소통하(는 느낌을 받으)ㄹ 수 있도록 댓글/좋아요/공유아 가능하다는 점.
잠깐 그건 너무 간단하잖아..; 아무튼 지금은 여기까지다. 

아티스트들 페북/트위터/유튜브 관리도 바쁠텐데, 할 일만 더 늘어난 것이 아니길 바란다. 


  • 탭 5: 나의 음악 (My Music)
기존의 음악 앱에 있던 기능을 열심히 쥐어짜서 한 화면에 녹아냈다. 
크게는 Library (보관함) / Playlist (재생목록) 두 가지 세부 메뉴로 나뉜다.



이쯤되니 설명 쓰기가 점점 귀찮아지는데 이 화면은 아이폰 쓰는 사람들에게 특별히 설명할 내용이 없어서 다행. 위에서 밝혔듯이 아티스트/앨범/재생목록/곡 등으로 나뉘어져 있던 화면을 단순화했다. 






여기서 한가지 실망 포인트. '노래 공유'를 누른 화면이다. 안타깝게도 페이스북에서 유튜브나 사운드클라우드 링크를 공유하는 것 처럼 바로 재생모듈이 뜨는 것이 아니다. 링크를 누르면 아이튠즈 스토어로 연결된다.



물론 그런 기능은 Spotify에도 없다. 웹에서 미리 듣기가 가능하게 만들어 놓으면 잘못하면 음원을 탈탈 털리는 수가 있어서 위험하다. 그렇지만 니들은 어떻게 해결했을 줄 알았는데.. 



  • PS: 검색 기능
Spotlight 검색과 비슷한 UI와 성능. 나쁘진 않다.





  • 썰.
    • 굳이 새로운걸 찾자면 유명한 DJ를 고용해서 큐레이션을 한다는 것.
    • 그러나 차별화 포인트는 많이 있다.
      • Pandora Radio 와의 차별점: 마케팅 파워;
      • Spotify와의 차별점: 마케팅 파워; 가족 할인 요금이 더 싸다 ($15)
        • Spotify는 계정 공유가 별 문제가 아니라 가족 할인이 그리 인기가 없는걸로 알고있다. 특히 부모님과 다같이 공유하는 문제 때문에 사용자 취향 분석을 하면 분명 유저는 60대인데 즐겨찾기에 10대 취향의 곡이 섞여있는 문제가 있다든지. 그렇지만 애플 계정은 결제와 연동되어 있어 가족이라도 계정 공유가 쉽지 않은데, 가족 요금제가 훨씬 싸다는건 기능에 차이가 없다면 Spotify에서 애플 뮤직으로 넘어갈만한 유인이 되는 듯. 
        • ..그렇지만 그냥 Spotify를 학생 요금(월 $5)으로 쓰고 그걸 부모님께 알려드리면 그게 제일 싸긴 한데;;  
      • 이 세상 다른 모든 음악 서비스와의 차별점:
        • 마케팅 파워
        • 플랫폼 장악력 - 앱을 깔 필요가 없다는 점
          • 옛날 MS가 굉장히 착했던 것 같은 느낌이 든다.
          • 접근이 쉽다. 
    • 전체적인 인상은 대중적이고 무난한 서비스를 잘 만들었으나 기능이 너무 많아서 실제로 사람들이 얼마나 파악하고 사용할지가 조금 의문.
    • 그러나 수많은 기능 중 자기가 쓰는 메뉴 한두개 잘 작동하면 충분하기 때문에, 그리고 아이폰에 깔려 나온다는 초특급 강점을 생각하면 Spotify가 뺏아간 돈 다시 뜯어올 수 있을 듯.
      • 물론 100% 뜯어오진 못하겠지만 상관 없음. 
    • 헤비유저
      • 헤비유저에게 월 $9.99 이상의 돈을 뜯어낼 방법이 지금은 보이질 않는다.
      • 덕질하는 사람들이 얼마나 돈을 쓰고싶어하는데... 별 관심이 없는듯. 

  • 음악 추천 알고리즘 썰
    • 플레이리스트는 대부분 편집자가 만드는 것으로 보인다.
      • 물론 사용자가 직접 만드는 라디오 스테이션 제외.
    • 자동 추천 알고리즘은 곡 추천이 아닌 앨범 추천을 주로 사용했다. (탭 1의 앨범 추천 파트 참고)
    • 무작정 추천하는 것이 아니라 어떤 아티스트가 언제 내놓은 앨범이고 어떤 앨범인지 설명을 달아놓았다.
      • 사용자에게 해당 음악을 선택하게 하는 아주 중요한 요소. 
    • 추천 알고리즘은 niche를 위한 niche item이라고 이야기들 하는데, 애플 뮤직 서비스에서 (라디오 스테이션을 제외하면) 가장 niche한 부분이 이 파트인듯 하다. 그리고 (그래서) 추천 알고리즘을 이 부분에만 도입한 듯 하다.
    • 잘 만든 서비스인데, 공부하는 입장에서 껍데기만 보고서는 특별히 드는 생각은 없다. 
  • 결론: 시크한척 하지만 잘 사용중; 
  • PS: 간접광고. 위의 '앱' 매뉴에 관심을...

PPS. 하하하하 애플이놈들 UI보게 하하하


PPPS. (마무리 간접광고: VR토익스카이스터디)