zakiranのブックマーク (78)

  • 自己回帰型モデルの深層学習 - Start Today Technologies TECH BLOG

    初めまして、データチームの上月です。 今回はVASILYテックブログ初の論文紹介、テーマは 自己回帰型モデル(Autoregressive, AR)です。 はじめに VASILYではIQONの類似画像検索にAutoencoderを適用しています。 具体的にはアイテム画像で学習したAutoencoderの潜在変数を特徴量として類似画像検索を行っていますが、背景やモデルの影響を受けやすいなどの課題があります。 この問題は「潜在変数にどのような情報を持たせるか」を調整することで解決できる可能性が高く、潜在変数の分布にはdecoderの表現力が関係しています。 最近ではVAEのdecoderとしてRNNや自己回帰型モデルなどといった表現力のあるモデルを用いたり1、 decoderの後にPixelCNN2を追加することで潜在変数がもつ情報を目的にあったものにする例があります(PixelVAE3)。

    自己回帰型モデルの深層学習 - Start Today Technologies TECH BLOG
    zakiran
    zakiran 2017/06/16
  • Fashion Tech meetup vol.4を開催しました - ZOZO TECH BLOG

    2017年6月7日、第4回目となるFashion Tech meetupを開催しました。今回はVASILYが主催となり、バックエンドチーム、フロントエンドチーム、データチームが業務で行っている開発・運用のノウハウを発表しました。 記事で弊社の登壇資料を公開しますので、ご参加できなかった方、Fashion Tech meetupを初めて知った方、是非ご一読ください。 メインセッション VASILY流CSSコーディング メインセッションの最初はフロントエンド担当の権守がCSSコーディングについて発表しました。 CSSコーディング規約や運用方法について紹介しています。また、デザインデータを細部まで表現するために使用しているツールや、デザイナーとのやり取りなども紹介しました。中でも大規模リファクタリング時に使用している、弊社で自作したPhantomJSを使用した差分検出ツールに注目が集まっていま

    Fashion Tech meetup vol.4を開催しました - ZOZO TECH BLOG
    zakiran
    zakiran 2017/06/09
  • レコメンドに画像の情報を活用する方法 - ZOZO TECH BLOG

    データサイエンティストの中村です。 ファッションアイテムの画像から抽出した特徴量は検索以外にも利用することができます。 今回はレコメンドにおける画像特徴量の活用について、以下の3トピックを考えてみたいと思います。 画像特徴量を利用したコンテンツベースレコメンド モデルベース協調フィルタリングにおけるコールドスタート問題の軽減 画像特徴量を利用したモデルベース協調フィルタリングの高度化 画像特徴量を利用したコンテンツベースレコメンド あるアイテムを好きなユーザーはとよく似たアイテムも好きであると仮定します。このユーザーへの推薦は、と似ているアイテムを推薦すれば良いわけですが、このとき、アイテムの類似度を評価する尺度として画像特徴量が使えます。 アイテムの画像特徴量をとしたとき、アイテムとアイテムの類似度はとの間の距離を用いて表現できます。類似度(距離)にはコサイン類似度やユークリッド距離がよ

    レコメンドに画像の情報を活用する方法 - ZOZO TECH BLOG
    zakiran
    zakiran 2017/05/31
  • HTML5における画像のレスポンシブ対応方法まとめ - ZOZO TECH BLOG

    こんにちは、Webフロントエンドエンジニアの権守です。 弊社では200以上の提携ECサイトから集めた大量の商品写真を取り扱っています。そのサービスの性質上、画像配信の最適化は非常に重要な課題の1つです。今回は最適化の一環として画像のレスポンシブ対応を導入しましたので、その際に調査した内容やハマったポイントなどを紹介します。 はじめに RetinaディスプレイなどのDPR(Device Pixel Ratio)の高いディスプレイの普及に伴い、Webサービス側でもその対応が必要となっています。基的には高解像度の画像を用意すればよいですが、高解像度になればその分ファイルサイズは大きくなり、配信にかかる時間も長くなります。そのため、適切な画像を選んで配信する必要があります。 DPRについてはこちらのページがわかりやすくまとまっています。 画像の配信制御 ベクター画像 高DPRな環境に対応するにあ

    HTML5における画像のレスポンシブ対応方法まとめ - ZOZO TECH BLOG
    zakiran
    zakiran 2017/05/25
  • 開発効率を上げる!Swaggerで作るWEB APIモック - ZOZO TECH BLOG

    こんにちは。バックエンドエンジニアのじょーです。 みなさんは、開発初期の段階でWeb API(以下API)の実装が追いつかずクライアント側が開発できないという経験をしたことはありますか? クライアント側はAPIがないと開発が滞ってしまうことがありますが、かといってAPIの開発も始まったばかりではすぐに必要なAPIを提供することができません。その問題を解決し、両者でスムーズに開発をすすめるために有効な方法の1つに、APIモックの作成があります。 弊社では、開発初期の段階でWeb APIのモックを作成し、スムーズに開発できるようにしています。 以前は、Apiaryをモック作成ツールとして利用していましたが、記法やエディターに使いづらい点があり最近Swaggerに移行しました。 記事では、Swaggerを使ったAPIモックの作成方法と手順、また気をつけるべき点などを紹介します。 目次 Swag

    開発効率を上げる!Swaggerで作るWEB APIモック - ZOZO TECH BLOG
    zakiran
    zakiran 2017/05/19
  • 開発効率を上げる!Swaggerで作るWEB APIモック - VASILY DEVELOPERS BLOG

    2017 - 05 - 19 開発効率を上げる!Swaggerで作るWEB APIモック API Swagger モック こんにちは。バックエンドエンジニアのじょーです。 みなさんは、開発初期の段階でWeb API(以下API)の実装が追いつかずクライアント側が開発できないという経験をしたことはありますか? クライアント側はAPIがないと開発が滞ってしまうことがありますが、かといってAPIの開発も始まったばかりではすぐに必要なAPIを提供することができません。その問題を解決し、両者でスムーズに開発をすすめるために有効な方法の1つに、APIモックの作成があります。 弊社では、開発初期の段階でWeb APIのモックを作成し、スムーズに開発できるようにしています。 以前は、Apiaryをモック作成ツールとして利用していましたが、記法やエディターに使いづらい点があり最近Swaggerに移行しました

    開発効率を上げる!Swaggerで作るWEB APIモック - VASILY DEVELOPERS BLOG
    zakiran
    zakiran 2017/05/19
  • Apache Mesos / Marathon を本番で運用するための5つのTips - ZOZO TECH BLOG

    こんにちは。 インフラエンジニアの光野です。 先日のブログ記事でご紹介したとおり、弊社のクローラーはDockerコンテナ化されています。このコンテナはApache MesosとMarathonのクラスタ上で動いています。 先日の記事はクローラーシステム全体を取り扱いましたが、記事ではMesos/Marathonを導入するにあたって必要だった設定について「〜したい」という形で紹介いたします。 Tips集として導入や検討の参考にしていただければ何よりです。 記事中の用語については先頭の前提知識・用語まとめにまとめています。また、Tipsは各見出しごとに独立させていますので、お好きな部分を参照ください。 シリーズ一覧 新クローラーシステムの全体観 Docker / Apache Mesos / Marathon による3倍速いIQONクローラーの構築 クラスタへのデプロイについて Produc

    Apache Mesos / Marathon を本番で運用するための5つのTips - ZOZO TECH BLOG
    zakiran
    zakiran 2017/05/12
  • モダンなSwiftのExtensionについて - Targeted Extensions - ZOZO TECH BLOG

    VASILYのiOSエンジニアにこらすです。最近、Swift Evolutionに私の2つ目の提案がマージされました。 今回は、Swiftで型にExtensionを作る特殊な方法について説明します。 今回紹介する方法を使ってExtensionを作ると、名前空間が切り分けられ、コードの読み書きがしやすくなります。 ブログを書くに当たって、この Extension 実装方法を研究しましたが、この手法の正確な名前がわからなかったため、この記事では「Targeted Extensions」と呼ぶことにします。 Extensionについて 通常、 Extensionを書くとき、String なら下記のようになります。 extension String { var count: Int { return characters.count } } "hello".count // 5 Extension

    モダンなSwiftのExtensionについて - Targeted Extensions - ZOZO TECH BLOG
    zakiran
    zakiran 2017/05/11
  • Qiita:Team + Hubot + textlintで文章校正を自動で実行する - ZOZO TECH BLOG

    こんにちは、Androidエンジニアの堀江です。最近はiOSのプロジェクトに参加してSwiftを書いています。新しいことを始めるのは楽しいですね。 ところで今ご覧になられている弊社の技術ブログ「VASILY DEVELOPERS BLOG」は、VASILYのエンジニアが交代で更新しています。記事に何を書くかは各エンジニアの裁量に任されていますが、公開前に社内でレビューをするようにしています。 レビューをする際には、以下のような点に注意しています。 誤字脱字・文法上の間違いが無いか 間違った情報が無いか 文章中にわかりにくい表現や解説が無いか このうち、誤字脱字・文法上の間違いは、文章校正ツールを使うことで機械的にチェックすることが可能です。それによって、文章そのもののより質的なレビューに時間を割くことができます。記事はレビュー前に文章校正済みであるのが理想ですが、実際には忘れる事も多いで

    Qiita:Team + Hubot + textlintで文章校正を自動で実行する - ZOZO TECH BLOG
    zakiran
    zakiran 2017/05/01
  • Railsアプリでクロールディレクティブを安全・効率的に設定する仕組み - ZOZO TECH BLOG

    こんにちは、フロントエンジニアの茨木です。 記事ではRailsアプリでクロールディレクティブを安全・効率的に設定する仕組みをご紹介したいと思います。 Web上にあるページは、クローラーと呼ばれるロボットに巡回されて検索エンジンにインデックス登録されます。大規模なサイトにおいてはページを効率よくインデックス登録させる必要があります。その際にクロールディレクティブと呼ばれる様々な設定が必要ですが、管理が複雑になってきます。この問題に対して、VASILYでの解決方法をご紹介します。同じような境遇の方々の参考になれば幸いです。 クロールディレクティブとは クロールディレクティブは、クローラーにサイト巡回の仕方を伝えるための設定です。これにより、クローラーに対してページをインデックス登録させない、ページ内のリンクを辿らせないといった設定を行うことができます。クロールディレクティブによりどのような設

    Railsアプリでクロールディレクティブを安全・効率的に設定する仕組み - ZOZO TECH BLOG
    zakiran
    zakiran 2017/04/25
  • ファッションアイテムの画像からの特徴抽出とマルチスケールなCNNの効果 - ZOZO TECH BLOG

    同僚に3ヶ月のディープラーニング禁止令を言い渡したデータサイエンティストの中村です。 VASILYではスナップ画像に写っているモデルさんが着ている服と似ている服を検索する画像検索エンジンを開発しています。 ファッションアイテムを探す際、デザイン(アイテムの色や模様)はとても重要なファクターになります。 ファッションアイテムの画像検索システムも当然、色や模様のような局所的な特徴を捉えた検索を提供する必要があります。ところが判別タスクにおける歴代チャンピオンモデルと同様のCNNを使って特徴抽出を行うと、局所的な特徴が失われて似ていないアイテムがヒットしてしまうという問題がありました。 そこで、局所的な特徴の保存と表現能力の向上を期待して、モデルに浅いネットワークを追加してマルチスケールに拡張しました。 今回はこの取り組みについて紹介したいと思います。 スナップ画像から商品画像を検索する スナッ

    ファッションアイテムの画像からの特徴抽出とマルチスケールなCNNの効果 - ZOZO TECH BLOG
    zakiran
    zakiran 2017/04/24
  • 開発にもっと優しさを - iOSアプリの実装規約について - ZOZO TECH BLOG

    こんにちは。iOSエンジニアの遠藤です。 今回はiOSチームでの実装規約について紹介したいと思います。 Swiftのコーディングについてだけではなく、実装する上での細かい約束事をまとめました。 参考になれば幸いです。 実装規約について VASILYでのiOSアプリ実装規約はこちらからご参照ください。 実装規約とは? 普段多く見る規約はコーディング規約だと思います。 しかしVASILYではコーディングだけではなく、Interface Builder上でのViewの階層やコードの並び順などコード自体の書き方だけではなくチームで開発・実装をするうえで気をつけることについても触れています。 そのため、コーディング規約ではなく実装規約としています。 実装規約の目的 実装規約にも書いてありますが、規約の目的は以下の3つです。 コードの統一 パフォーマンスの向上 メンテナンス性の向上 複数人で開発をし

    開発にもっと優しさを - iOSアプリの実装規約について - ZOZO TECH BLOG
    zakiran
    zakiran 2017/04/19
  • VASILYにおけるBigQuery + Tableau活用例 - ZOZO TECH BLOG

    こんにちは! なんでもディープラーニングでやりたがる癖が抜けず、3ヶ月のディープラーニング禁止令を言い渡されていた後藤です。 記事ではVASILYで利用しているデータ分析の環境について紹介します。 VASILYではデータ分析が必要な場面で、BigQueryとTableauを組み合わせて利用することが多いため、これらの実際の活用例とTableauの選定理由について紹介したいと思います。 以前、CTOがデータ周りの環境の全体像を紹介しました。 tech.vasily.jp 社内ではBigQueryを中心にデータ周りの環境が構築されており、そこからデータ活用のあらゆる業務へつながります。 データの可視化と社内への共有は主にTableauを使っています。 まずは、BigQueryとTableauの説明から始めます。 BigQuery とは BigQueryとは、Googleが提供しているデータウ

    VASILYにおけるBigQuery + Tableau活用例 - ZOZO TECH BLOG
    zakiran
    zakiran 2017/04/17
  • インターン生がデータ転送基盤を一から設計する、VASILYバックエンドインターンの紹介 - ZOZO TECH BLOG

    こんにちは、バックエンドエンジニアの塩崎です。 先日、VASILYバックエンドチームにインターン生が来てくれました。 この記事では彼がインターンで作ってくれた機能や、インターン中のスケジュールなどを紹介します。 インターンに来たのはこんな学生 インターンに来たのはこの春に大学4年生になったばかりの、柴犬大好き系エンジニアのT君です。 好きな言語はClojureというなかなかギークな学生さんでした。 インターンに来てもらう前に提出してもらった事前課題では、コードの綺麗さが光っていました。 この課題はRuby on Railsで「とあるお題」に従ったWeb APIを作るものなのですが、Rubyでありながら変数の再代入を嫌う傾向はさすが関数型に慣れているだけのことはあるなと感じました。 やってもらったタスク 目標 今回のインターンでT君にやってもらったタスクはMySQLからBigQueryのデー

    インターン生がデータ転送基盤を一から設計する、VASILYバックエンドインターンの紹介 - ZOZO TECH BLOG
    zakiran
    zakiran 2017/04/14
  • 数百サイトのクローラーを効率よく運用する仕組み - ZOZO TECH BLOG

    こんにちは! バックエンドエンジニアのりほやんです! 2017年の2月28日にIQONはリブランディングを行い、タグラインを "わたしの「好き」がここにある” に刷新しました。 この “わたしの「好き」がここにある” という体験をユーザーにしていただくには、IQONに掲載されている商品情報がとても重要になります。 そして、正確な商品情報の掲載にはクローラーが正しく運用され稼働していることが必要不可欠です。 記事では、IQONの商品情報を支えるクローラーの運用をどのように仕組み化しているかについてご紹介します。 クローラーを作成、運用されている方々のお役に立てたら幸いです。 弊社テックブログでは以前、『速くクロールすること』に注目した記事を公開しましたが、今回は『正しくクロールすること』に注目しました。 『速くクロールすること』に注目した『Docker / Apache Mesos / M

    数百サイトのクローラーを効率よく運用する仕組み - ZOZO TECH BLOG
    zakiran
    zakiran 2017/04/10
  • Clojure勉強日記(その21 varを使用したスレッドローカルな状態管理 - 夢とガラクタの集積場

    こんにちは。 STMの機構を用いた状態更新が完了し、次はvarの確認に入ります。 defやdefnの呼び出しは、メタデータ:dynamicが与えられると動的なvarになるとのことです。・・・わかりませんね(汗 なので、やはりこちらも一度書いて試してみます。 ルート束縛とletとbinding ^:dynamicという形で動的にルート変数を束縛することが可能になります。 別スレッドからも参照可能です。 user=> (def ^:dynamic foo 10) #'user/foo user=> foo 10 user=> (.start (Thread. (fn [] (println foo)))) nil 10 ここでルート束縛でないbindingが登場します。bindingマクロを使うことでスレッドローカルな束縛を持つことが可能になります。 letと似ていますが、違う点もあります。

    Clojure勉強日記(その21 varを使用したスレッドローカルな状態管理 - 夢とガラクタの集積場
    zakiran
    zakiran 2017/02/04
  • 畳込関数fold:foldrとfoldlの違い (あるいはfold_right, fold_left) - 一歩前進

    畳込関数fold リストに関する処理は、以下のようなパターンで処理することが多いです。 f [] = v f (x:xs) = x ● f xs 上記は関数fにリストを与えた時、次のような処理を行います。 リストが空の場合:値vが返される リストが空でない場合:先頭要素xと関数fを残りのリストxsに適用した結果に対して、何らかの演算●を適用したものが返される このようなパターンを簡潔に記述するために畳み込み(fold)と呼ばれる関数を使うことが出来ます。1 例として、合計を取るsum関数の通常版とfold版を示します。ソースコードはHaskellです。 sumの通常版 sum [] = 0 sum (x:xs) = x + sum xs sumのfold版 sum = foldr (+) 0 foldは次の入力を受け取り、出力を返します。 入力: 2引数関数 アキュムレータの初期値 畳み込

    畳込関数fold:foldrとfoldlの違い (あるいはfold_right, fold_left) - 一歩前進
    zakiran
    zakiran 2016/12/19
  • Clojureをスクリプトとして使う:inlein - (-> % read write unlearn)

    inleinはClojureをスクリプトとして使用することを可能にしてくれるツールです。leiningen経由でClojureのコードを実行すると起動が遅いという問題があります。inleineはこの問題を解決(緩和)してくれます。 ちなみに、「スクリプト」と言っているのは「ShellScript」とか「インストール・スクリプト」とか言う時のスクリプトの意味で、ClojureScriptのことではないです。 以降は、inleinのインストールと使い方を簡単に説明し、leiningenとleinで速度を簡単に比べます。インストールや使い方については、良ければREADMEの和訳もあわせてご参照ください。 Install 前提 JavaのJDKのversion 7以上が入っていること。java -versionとかで確認してください。 手順 ここから、リリースされている最新のinleinプログラム

    Clojureをスクリプトとして使う:inlein - (-> % read write unlearn)
    zakiran
    zakiran 2016/09/23