전체 글
[python] 함수 - 가변 인수
파이썬 인수에 대해 알아보겠습니다. 파이썬을 활용하다 보면, 아래와 같은 함수 방식으로 인자를 주는 것을 종종 보셨을 겁니다. # 1번 케이스 def function(*args): ...(이하 코드 생략)... # 2번 케이스 def function2(**kwargs): ...(이하 코드 생략)... 이렇게 인수 이름 앞에 * 기호를 붙이면, 이 자리에 여러 개의 인수가 올 수 있습니다. 이것을 '가변 인수'라고 지칭합니다. 가변 인수의 특징은 정해진 개수만큼의 실인수를 전달해야할 필요가 없습니다. 가변 인수는 임의 개수의 인수를 받는 다는 것이 특징입니다. 아래 예를 통해 확인해보겠습니다. def intsum(*ints): sum = 0 for num in ints: sum += num return s..
[Multi-modal] 논문 리뷰 FashionVLP
이번에 소개할 논문은 Fashion VLP라는 논문입니다. FashionVLP는 '시각-언어 상호작용 (Vision-Language Interaction)'을 이용하여 패션 관련 작업을 수행하는 비전 언어 모델입니다. 이 논문에서는 패션 이미지에 대한 캡션 생성, 이미지 검색 및 다른 언어 모델과의 비교 실험 등에 대해 다루고 있습니다. 또한, FashionVLP는 BERT 기반의 언어 모델과 ViT 기반의 비전 모델을 결합하여 학습되며, 다양한 패션 관련 작업에서 우수한 성능을 보여줍니다. 이러한 결과는 FashionVLP가 다양한 패션 관련 응용 분야에서 유용하게 사용될 수 있다는 가능성을 제시합니다. Fashion VLP - 논문 제목: FashionVLP: Vision Language Transf..
[tensorflow] 함수형 API 활용한 CNN 예시
Functional API 특징 텐서플로우에서 제공하는 가장 직관적인 Sequential 모델은 쉽고 빠르게 레이어를 쌓아 딥러닝 모델을 만들 수 있습니다. 여기서 Sequential 모델은 네트워크 입력과 출력이 하나라가 가정합니다. 그리고 많은 경우에서 이 가정이 적절합니다. 하지만 이런 가정이 맞지 않는 경우가 발생할 수 있습니다. 예를 들면 개별 입력을 여러 개 필요로 하는 네트워크이거나 여러 개를 출력하는 네트워크의 경우에는 단순히 선형적으로 층을 쌓는 sequential 모델로는 구현할 수 없습니다. 이런 경우 함수형 API를 고려합니다. 함수형 API는 다양한 경우에서 활용할 수 있습니다. 아래의 그림처럼 소셜 미디어 포스팅을 통해 나이를 예측하고, 수입을 예측하고, 성별을 예측하는 하나의 ..
[Tensorflow] AutoEncoder 오토인코더 구현하기
본 포스팅은 Applied Deep Learning - Autoencoders 편을 참고하였습니다. 오토인코드는 입력과 출력이 동일한 피드포워드 신경망의 한 유형입니다. 입력을 의도적으로 낮은 차원의 '코드'로 압축, 이후에 이 압축된 '코드'라는 표현을 기반으로 출력을 재구성(reconstruct)합니다. 코드는 입력의 간결한 "요약" 또는 "압축"이며 '잠재 공간 포현 (latent space representation)'이라고도 합니다. 오토인코더의 구성요소 오토 인코더는 [ 인코더, 코드, 디코더 ] 총 3개의 요소로 구성되어 있습니다. 인코더는 입력을 압축하고, 압축된 입력은 코드가 됩니다. 디코더는 이 코드를 사용하여 입력을 재구성합니다. 아래는 오토인코더의 동작 예시입니다. MNIST의 데이..
[추천시스템] Buy It Again: Modeling Repeat Purchase Recommendations (Bhagat et al., 2018)
Amazon의 재구매 추천시스템에 관한 논문 리뷰입니다. 딥러닝이나 그래프 마이닝과 같은 최신 기법에 의거한 방법론이 아닌, 통계 모델링으로 재구매 특성을 표현한 것이 큰 특징입니다. 특히, '재구매 가능한' 물품에 대해서 구매가 이뤄졌을 때, 직후에는 해당 제품을 추천하지 않고, 시간의 흐름에 따라 구매욕구가 올라왔을 때 다시 추천을 하는 의미있는 계절성 추출이 흥미로우며, 기저귀, 분유 등과 같이 초기에는 활발하게 특정 주기에 맞춰 구매하지만, 아기가 커갈수록 구매가 감소하는 그리고 영영 구매하지 않게 되는 특성을 어떻게 반영했는지에 집중해서 논문을 보면 될 것 같습니다. 또한, "감마분포, 푸아송분포를 어떻게 활용했는지", "어떠한 Offline 테스트를 거쳐서 며칠 동안 어떻게 online 테스트..
[딥러닝] 합성곱 신경망 - 직관적으로 convolutional layer 깊이에 대해 이해하기
본 포스팅에서는 수식적으로 합성곱 연산을 설명하기 보다는 그림에 의존한 직관적인 내용을 이야기 해보겠음 합성곱 연산 완전 연결층(Dense Layer)과 합성곱 층(Convolutional Layer) 사이의 근본적인 차이는 어떻게 될까? Dense층은 입력 특성 공간에 있는 전역 패턴을 학습하지만, 합성곱 층은 지역 패턴을 학습합니다. 만약 이미지라면 작은 2D 윈도우로 입력에서 패턴을 찾습니다. 컨브넷은 두 가지 흥미로운 성질을 제공하는데요. 첫째, 학습된 패턴은 평행 이동 불변성(translation invariant)를 갖습니다. 컨브넷이 이미지의 오른쪽 아래 모서리에서 어떤 패턴을 학습했다면, 다른 곳(예를 들어 왼쪽 위 모서리)에서도 이 패턴을 인식할 수 있습니다. 해당 패턴을 학습했기 때문에..
[Tensorflow] Multi GPU 사용하기 (gpu 병렬처리)
데이터의 용량이 큰 경우, 가용할 수 있는 GPU가 여러 개인 경우, 더 효율적으로 모델을 학습할 수 있는 방법이 있습니다. 단일 GPU가 아닌 여러 개의 GPU를 활용하여 분산전략을 수행한다면, 더 빠르게 모델을 학습시킬 수 있습니다. (물론 너무 적은 데이터의 경우 데이터를 분할하는 시간이 더 오래걸리기 때문에, 그러한 경우에는 단일 GPU를 사용하면 됩니다) GPU병렬 처리에는 다양한 방법이 존재하는데요. 간단한 소개와 함께 대표적인 방법 코드를 통해 확인해보겠습니다. 방법1. MirroredStrategy TensorFlow에서 여러 gpu를 활용한 학습에 추천하는 방법입니다. 사전에 설정된 & 사용 가능한 모든 GPU자원을 동시에 활용을 하는 방법을 채택하는데요. 이때 입력 데이터는 병렬적으로 ..
[Zeppelin] M1 맥에서 로컬에 제플린 설치하는 방법
Zeppelin은 크게 두가지 방법으로 설치할 수 있습니다. 1. 로컬 머신 설치 2. 도커 이미지를 활용한 설치 본 포스팅에서는 로컬 머신 설치에 대해 다뤄보도록 하겠습니다. 우선 아파치 제플린 다운로드 페이지로 접속합니다. 저는 Spark 3.3.2 버전을 사용하고 있는데요. 호환성을 확인한 뒤 환경에 맞는 zeppelin을 설치하면 됩니다. 저는 0.10.0 버전을 설치했습니다. 설치하고자 하는 zeppelin 버전을 정했다면, 해당 파일을 눌러 다운로드 사이트로 들어가줍니다. 위 버튼을 클릭하면 해당 버전을 다운로드 할 수 있는 사이트가 나오는데요. 빨간 밑줄이 쳐진 url을 복사합니다. 이제 터미널로 들어가서 적당한 경로로 접속하여 아래의 커맨드를 이용해 다운받겠습니다. wget https://..